datasets/201807_ETHPrize/ETHPrize - semisupervised approach.ipynb

4800 lines
194 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"toc": true
},
"source": [
"<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
"<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#Handcrafting-Ethereum-vocabulary\" data-toc-modified-id=\"Handcrafting-Ethereum-vocabulary-1\"><span class=\"toc-item-num\">1&nbsp;&nbsp;</span>Handcrafting Ethereum vocabulary</a></span><ul class=\"toc-item\"><li><span><a href=\"#Proof-of-Concept\" data-toc-modified-id=\"Proof-of-Concept-1.1\"><span class=\"toc-item-num\">1.1&nbsp;&nbsp;</span>Proof of Concept</a></span></li><li><span><a href=\"#Formatting-for-JSON\" data-toc-modified-id=\"Formatting-for-JSON-1.2\"><span class=\"toc-item-num\">1.2&nbsp;&nbsp;</span>Formatting for JSON</a></span></li></ul></li></ul></div>"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:41.573669Z",
"start_time": "2018-07-18T16:29:40.166530Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
" from ._conv import register_converters as _register_converters\n",
"Using TensorFlow backend.\n"
]
}
],
"source": [
"import pandas as pd\n",
"import spacy\n",
"from namedentities import named_entities # HTML escaping\n",
"\n",
"from gensim.utils import simple_preprocess\n",
"from gensim.models import Phrases\n",
"from gensim.models.phrases import Phraser"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:47.636419Z",
"start_time": "2018-07-18T16:29:41.575096Z"
}
},
"outputs": [],
"source": [
"# Download the model with 'python -m spacy download en_core_web_lg --user'\n",
"# Note: this is a 800MB model\n",
"# 'en_core_web_sm', 29MB can be used as alternative\n",
"# see https://spacy.io/models/en#section-en_core_web_lg\n",
"nlp = spacy.load('en_core_web_lg')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:47.665027Z",
"start_time": "2018-07-18T16:29:47.637861Z"
}
},
"outputs": [],
"source": [
"df = pd.read_excel('interviews_20180710.xls')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:47.708794Z",
"start_time": "2018-07-18T16:29:47.666151Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>How do you handle smart contract verification and security?</th>\n",
" <th>Other bounties?</th>\n",
" <th>Who are you and what are you working on?</th>\n",
" <th>What are the tools/libraries/frameworks you use?</th>\n",
" <th>What are your biggest frustrations?</th>\n",
" <th>How do you handle testing?</th>\n",
" <th>What tools dont exist at the moment?</th>\n",
" <th>Other domain specific questions?</th>\n",
" <th>What was the hardest part about learning to develop with Ethereum?</th>\n",
" <th>What are you most excited about in the short term?</th>\n",
" <th>Was anything easier than expected?</th>\n",
" <th>Who are the other people you think we should talk to?</th>\n",
" <th>What are the best educational resources?</th>\n",
" <th>Are there any other questions we should be asking?</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Fabio Berger + Remco Bloemen</td>\n",
" <td>Code audits before deployment\\nWant to add a f...</td>\n",
" <td>Rest of the bounties from Remco\\nState-watchin...</td>\n",
" <td>0x - Decentralized exchange protocol. It is a ...</td>\n",
" <td>EthereumJS / truffle hardwallet provider / Typ...</td>\n",
" <td>Getting a simple experimental environment up i...</td>\n",
" <td>Testrpc has gotten better \\nIncreases the sp...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Leo Logvinov</td>\n",
" <td>NaN</td>\n",
" <td>There is a limit on local variable numbers (ha...</td>\n",
" <td>Started in blockchain 2 years ago in Berlin, w...</td>\n",
" <td>NaN</td>\n",
" <td>Event watching - unreliable, no support for ba...</td>\n",
" <td>NaN</td>\n",
" <td>Prettier type plugin for solidity. I dont hav...</td>\n",
" <td>What has your experience been like working on ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Axel Ericsson</td>\n",
" <td>Human thinking and auditing.\\nWill find some e...</td>\n",
" <td>Breaking out a javascript library for web page...</td>\n",
" <td>I have built 1Protocol\\nIt lets smart contract...</td>\n",
" <td>Just web3JS and the python raiden client</td>\n",
" <td>NaN</td>\n",
" <td>Truffle suite. Before that, built our own unit...</td>\n",
" <td>There is no tooling or anything related to sta...</td>\n",
" <td>NaN</td>\n",
" <td>Solidity is changing so quickly that, as an ex...</td>\n",
" <td>Raiden is the golden egg in the space. The exp...</td>\n",
" <td>Writing smart contracts is surprisingly neat. ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Mike Goldin</td>\n",
" <td>NaN</td>\n",
" <td>Pretty cool to have more languages for the EVM...</td>\n",
" <td>Software developer at Consensys\\nKnown for Tok...</td>\n",
" <td>Truffle, useful as a testing framework.\\nSolid...</td>\n",
" <td>Truffles debugger is a bit disappointing. Wor...</td>\n",
" <td>Writes tests in Javascript\\nSol Coverage tool\\...</td>\n",
" <td>Fuzz Testing and formal verification desired.</td>\n",
" <td>NaN</td>\n",
" <td>Hardest part is learning to develop in a block...</td>\n",
" <td>Excited for Casper\\nApplications implemented i...</td>\n",
" <td>Whats really easy is programming money.\\nOn b...</td>\n",
" <td>Infura team, client development\\nSpankchain - ...</td>\n",
" <td>Solidity Docs\\nUses yellow paper gass lookup t...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Oleksii</td>\n",
" <td>We have written our own tools which tell us, f...</td>\n",
" <td>NaN</td>\n",
" <td>Started working with smart contracts in early ...</td>\n",
" <td>NaN</td>\n",
" <td>Our original vision was to do everything tes...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>What are other great tools you have used?\\nEth...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Brett Sun</td>\n",
" <td>Human audits only right now.\\nTrailofbits is r...</td>\n",
" <td>NaN</td>\n",
" <td>Working on Aragon entirely.\\nThe end goal is t...</td>\n",
" <td>Four categories:\\nEVM and lower level stuff:\\n...</td>\n",
" <td>My biggest general frustration comes with the ...</td>\n",
" <td>In addition to the above we also use solidity-...</td>\n",
" <td>A nice debugger! Please…\\nMore infrastructure ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Google + Github is my go to.\\nNot enough has b...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Jorge Izquierdo</td>\n",
" <td>NaN</td>\n",
" <td>Infura that is more decentralized. A full-node...</td>\n",
" <td>Aragon - Decentralized Governance platform\\nWe...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Tell us more about getting deep into the EVM?\\...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Jack Peterson and Sparkle</td>\n",
" <td>Pay others to think about it - no process yet....</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Back-end: Visual Studio Code with docker image...</td>\n",
" <td>Lack of a debugger - by far the biggest issue....</td>\n",
" <td>NaN</td>\n",
" <td>Setting breakpoints in tests!\\nSalesforce Deve...</td>\n",
" <td>Lets talk specifically about UI issues / scal...</td>\n",
" <td>What steps do I need to follow to write these ...</td>\n",
" <td>Raiden is coming shortly and will be very cool...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Joey Krug</td>\n",
" <td>Yeah, encourage everyone to use auditors. Lots...</td>\n",
" <td>NaN</td>\n",
" <td>Co-Chief Investment Officer at Pantera Capital...</td>\n",
" <td>At Augur, stack is different as its a bit old...</td>\n",
" <td>At the end of the day, it all comes down to th...</td>\n",
" <td>Run against pyethereum. Test suite is written ...</td>\n",
" <td>My answers changed over a time, 1 year ago it ...</td>\n",
" <td>Would be useful if the Ethereum project could ...</td>\n",
" <td>NaN</td>\n",
" <td>In the short term, hes most excited about Mak...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Back then documentation was very sparse, blogs...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Mark Beylin</td>\n",
" <td>Consensys diligence is an auditing team availa...</td>\n",
" <td>NaN</td>\n",
" <td>Creator of the Bounties Network. Bounties on a...</td>\n",
" <td>I know and use the solium linter.\\nUse truffle...</td>\n",
" <td>Not being able to upgrade my contracts easily....</td>\n",
" <td>Mocha tests using Truffle and testrpc.\\nAlso u...</td>\n",
" <td>Better querying possibilities on the state of ...</td>\n",
" <td>NaN</td>\n",
" <td>Didnt understand the stack. People dont unde...</td>\n",
" <td>Sharding. Thats all I want.\\nuPort is getting...</td>\n",
" <td>NaN</td>\n",
" <td>Joseph Vander (learning the be a solidity deve...</td>\n",
" <td>NaN</td>\n",
" <td>Curious to know about developer incentives. As...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Aidan Hyman</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Working with parity and geth and parity-bridge...</td>\n",
" <td>Truffle\\nLack of modularity is the biggest pro...</td>\n",
" <td>NaN</td>\n",
" <td>Talk with Stu, who handles all the testing stu...</td>\n",
" <td>Mythril for the EVM stack. Rewrite a complete ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Two of our most exciting projects:\\nShift - de...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Honestly just readthedocs, gitter channels and...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Greg, Stu, David</td>\n",
" <td>Mythril, as mentioned above.</td>\n",
" <td>NaN</td>\n",
" <td>David: EVM layer stuff: interactions between o...</td>\n",
" <td>JetBrains suite as an IDE. Remix comes in ther...</td>\n",
" <td>Up to date documentation!!\\nSystem dependence ...</td>\n",
" <td>Mostly unit tests in mocha and chai.\\nMostly u...</td>\n",
" <td>EVMLab certainly has some of the features requ...</td>\n",
" <td>NaN</td>\n",
" <td>Greg: Looked at web3 documentation (as it was ...</td>\n",
" <td>NaN</td>\n",
" <td>Community! Going to EDCON was an eye-opening, ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Where do we actually find out more about all t...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Jon Maurelian</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>I work at Consensys Diligence doing audits; si...</td>\n",
" <td>We use Truffle a lot (never had to use Dapple ...</td>\n",
" <td>Auditing:\\nA lot of my time is spent understan...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Piper Merriam\\nNick Johnson\\nChristian Lundkvi...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Nick Dodson</td>\n",
" <td>Mythril will be useful when in full bloom - ne...</td>\n",
" <td>NaN</td>\n",
" <td>Working on experimental infrastructure. ARES, ...</td>\n",
" <td>Solidity Compiler\\nThe C version is very fast ...</td>\n",
" <td>Data verifiability problem - nobody is going t...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Tell us more about TCRs and DAOs?\\nThere are m...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Ilan Benbrith</td>\n",
" <td>Consensys Diligence provides some of the best ...</td>\n",
" <td>NaN</td>\n",
" <td>Im the Technical PM at Consensys Academy work...</td>\n",
" <td>Truffle, Ganache, Remix, Metamask etc.\\nFront ...</td>\n",
" <td>Gas and fees is a common frustration, given th...</td>\n",
" <td>Truffle testing\\nBest practices resources</td>\n",
" <td>Drizzle is a really cool idea for front-end de...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Were still so early on but we hope to incorpo...</td>\n",
" <td>NaN</td>\n",
" <td>Youtube videos\\nConferences and Meetups - putt...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Goncalo Sa</td>\n",
" <td>NaN</td>\n",
" <td>None come to mind right now. Lets keep the fo...</td>\n",
" <td>I work at Consensys Diligence - focus on secur...</td>\n",
" <td>I used to use Remix a lot more than I do today...</td>\n",
" <td>I really, really want a good visual debugger. ...</td>\n",
" <td>Remix, Surya and Mythril as above.\\nVery small...</td>\n",
" <td>A proper, local dummy client. I love the Truff...</td>\n",
" <td>What are the details/patterns in smart contrac...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Bernard Miller from our team, focussed entirel...</td>\n",
" <td>I do this less frequently now, but I basically...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Fabiano, Jordan, Nick</td>\n",
" <td>Audit code: bounty hunt program, found one maj...</td>\n",
" <td>NaN</td>\n",
" <td>Cryptokitties! Goals they have are to get mult...</td>\n",
" <td>Been a while since we have done smart contract...</td>\n",
" <td>The lack of proper debugging support. That cau...</td>\n",
" <td>Standard testing and using community to audit ...</td>\n",
" <td>2 main areas with significant problems:\\nData ...</td>\n",
" <td>Have you written any open source tools for sca...</td>\n",
" <td>The real problems come into play when you are ...</td>\n",
" <td>The thing we are excited about most in the nex...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Solidity documentation was quite good. Had all...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>Andy Milenius</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>DappHub:\\nWorking on dev tools since I got int...</td>\n",
" <td>NaN</td>\n",
" <td>Ethereum relies heavily on Javascript dev tool...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>How can Ethereum create more cultural norms an...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>Esteban Ordano</td>\n",
" <td>NaN</td>\n",
" <td>Biggest request: have ERC20 upgraded to ERC223...</td>\n",
" <td>Im hiring two or three people excellent eng...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Pains:\\nThe gas issues the expensiveness of ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Should speak with Fede should collaborate t...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>Matias Bargas</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>I used to be an investor, but came to crypto a...</td>\n",
" <td>The whole Ethereum stack, basically.\\nTruffle\\...</td>\n",
" <td>Real monitoring information is tough to come b...</td>\n",
" <td>NaN</td>\n",
" <td>Starting from the infrastructure stuff: we nee...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>The Decentraland client!! Woot woot.\\nSomethin...</td>\n",
" <td>No, not really.\\nActually, extending the open ...</td>\n",
" <td>NaN</td>\n",
" <td>I came from a strange backend doing tooling fo...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>Nadav Hollander</td>\n",
" <td>Write down in plain text documents what the in...</td>\n",
" <td>A GREAT SOLIDITY DEBUGGER\\nA turnkey solution ...</td>\n",
" <td>Building Dharma - open protocol for tokenized ...</td>\n",
" <td>I like to use Typescript for testing.\\n0x team...</td>\n",
" <td>NaN</td>\n",
" <td>Truffle to write JS unit tests.\\n** There are ...</td>\n",
" <td>Good logging and debugging\\nSetting up your ow...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>“What is the thing that makes debugging solidi...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>Alex van de Sande</td>\n",
" <td>NaN</td>\n",
" <td>Finding talented people is very hard. They are...</td>\n",
" <td>Working on Mist, the Ethereum browser.\\nDevelo...</td>\n",
" <td>NaN</td>\n",
" <td>Securing Electron (desktop JS) was hard. (JS i...</td>\n",
" <td>People build new features, we check, and then ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>One dev working on a backend integration I s...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Nick Johnson\\nRyan Zurrer</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>Nick Johnson</td>\n",
" <td>Write a spec and define edge cases and corner ...</td>\n",
" <td>NaN</td>\n",
" <td>ENS: documentation, smart contracts, UIs,\\nAu...</td>\n",
" <td>Open Zeppelin tools are increasingly good. But...</td>\n",
" <td>NaN</td>\n",
" <td>Truffle unit testing with mocha\\nAdded built i...</td>\n",
" <td>Byzantium added return data size (prevents arb...</td>\n",
" <td>NaN</td>\n",
" <td>Becoming familiar with the execution model\\nYo...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>Elena Nadolinski</td>\n",
" <td>NaN</td>\n",
" <td>Documentation\\nDebugging, so helpful. A debugg...</td>\n",
" <td>Last 6 months have been working on Solidity, E...</td>\n",
" <td>Use Truffle because its by far the best frame...</td>\n",
" <td>Lack of error messages, since Solidity 24 you ...</td>\n",
" <td>Truffle for testing. Force people to do TTD in...</td>\n",
" <td>A lot of tools exist but arent being utilized...</td>\n",
" <td>NaN</td>\n",
" <td>Its a myth for how hard it is. “Im a Solidit...</td>\n",
" <td>Quitting her job to start her own project so v...</td>\n",
" <td>NaN</td>\n",
" <td>Christopher Gewecke, Wyvern team</td>\n",
" <td>Personally found a couple Medium articles here...</td>\n",
" <td>Real world companies that are not tech savvy c...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>Swaroop</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>We are building EthVigil an API gateway to to ...</td>\n",
" <td>Mostly custom tools. Started with web3, starte...</td>\n",
" <td>NaN</td>\n",
" <td>Basic unit tests, integration testing. So much...</td>\n",
" <td>Web3 is a library to make it easier for a lot ...</td>\n",
" <td>NaN</td>\n",
" <td>The first thing I built was a tool that looks ...</td>\n",
" <td>We built a platform to help people use blockch...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Barely anything with tutorials when they got s...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>Alex Beregszazzi &amp; Pawel Bylica</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Pawel - focused on VM in general, spent a lot ...</td>\n",
" <td>NaN</td>\n",
" <td>Communication is bad within EF and within ecos...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>Christian Reitwiessner</td>\n",
" <td>NaN</td>\n",
" <td>Gas profiling:\\nSolidity does some upper-bound...</td>\n",
" <td>90% of my time: design of Solidity language an...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Tell us more about computational scalability o...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>Fabian Vogelsteller</td>\n",
" <td>NaN</td>\n",
" <td>Need good IDEs:\\nRemix is good, but has proble...</td>\n",
" <td>My future project: Lukso blockchain: EVM-based...</td>\n",
" <td>Web3.js\\nHistory:\\nInitially, it was built by ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>Hudson Jameson</td>\n",
" <td>Use the Remix tool to just scan for general bu...</td>\n",
" <td>Dev Grants from the Foundation\\nEthereum found...</td>\n",
" <td>Mainly focused on solidity smart contracts. A ...</td>\n",
" <td>Remix, MyEtherWallet, MetaMask</td>\n",
" <td>Hard to read error messages. Solidity and EVM ...</td>\n",
" <td>Have been using Truffle more lately but was mo...</td>\n",
" <td>Remix combines an editor with a deployment mec...</td>\n",
" <td>NaN</td>\n",
" <td>The resources are pretty spread out, and every...</td>\n",
" <td>Casper. Its already kind of going into testin...</td>\n",
" <td>NaN</td>\n",
" <td>Raine Revere from ShapeShift</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>Martin Swende</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>I was a security professional, doing consultin...</td>\n",
" <td>NaN</td>\n",
" <td>Definitely a need for more developers, either ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>Scott Wright</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Just simple stuff - proofs of concept.\\nWorkin...</td>\n",
" <td>Remix\\nGeth obviously\\nSolC for compiling\\nYar...</td>\n",
" <td>Hasnt happened across too much yet! Been work...</td>\n",
" <td>Automated testing?\\nTheres an IDE that Ive u...</td>\n",
" <td>Automated testing - I want a testing suite, a ...</td>\n",
" <td>NaN</td>\n",
" <td>Would have been that initial setup of the deve...</td>\n",
" <td>Vyper!\\nHave big hopes for truffle - has a lot...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>Felix Feng</td>\n",
" <td>Contracted security auditing firm before launc...</td>\n",
" <td>Debugger\\nMore free automated formal verificat...</td>\n",
" <td>Founder of Set Protocol, wrote all the smart c...</td>\n",
" <td>Internal javascript library in Typescript for ...</td>\n",
" <td>Truffle migrate on main net\\nWeird configurati...</td>\n",
" <td>Started with truffle tests\\nThen converted tes...</td>\n",
" <td>Debugger. Especially as contracts start linkin...</td>\n",
" <td>NaN</td>\n",
" <td>Truffle needs to be easier for beginners. Toug...</td>\n",
" <td>Ethereum proof of stake\\n0x open source tools....</td>\n",
" <td>MVP versions of product are easy. Handling all...</td>\n",
" <td>NaN</td>\n",
" <td>Consensys Academy\\nTruffle/Solidity documentat...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>Simon Jentzsch</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>CTO of SlockIt.\\nDaily standups like any other...</td>\n",
" <td>Start with Truffle - mainly for testing and se...</td>\n",
" <td>IDE integration\\nThere are tools and plugins f...</td>\n",
" <td>NaN</td>\n",
" <td>Scalability is long-hoped for and looked forwa...</td>\n",
" <td>IOT security challenges?\\nUse blockchain to en...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Having people around, trying new things, debug...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>Fernando G</td>\n",
" <td>I always try to keep myself on top of existing...</td>\n",
" <td>I think anything related to ease the whole lif...</td>\n",
" <td>I am a developer, working in London for the la...</td>\n",
" <td>Well, it depends, when I build tools related t...</td>\n",
" <td>Maybe it is my fault, but I would like to see ...</td>\n",
" <td>For unit testing I use truffle, I write JavaSc...</td>\n",
" <td>Good question, there is a lot of ecosystem tha...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Scalability improvements. I want sharding and ...</td>\n",
" <td>NaN</td>\n",
" <td>Hmm not sure if you spoke to Bernhard Mueller,...</td>\n",
" <td>I would say no books, because they get outdate...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>Dandelion</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>SourcCred - bounties and reputation for open s...</td>\n",
" <td>NaN</td>\n",
" <td>Highly adversarial environment makes it hard t...</td>\n",
" <td>NaN</td>\n",
" <td>At core abstractions layer. If SourceCred depe...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>CryptoZombies really improved my intuition.</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>David Wolever</td>\n",
" <td>Front end: nothing really\\nDapp: went through ...</td>\n",
" <td>NaN</td>\n",
" <td>Been working with Spankchain team. Combination...</td>\n",
" <td>Vim editor, truffle. Metamask.\\nSwitching over...</td>\n",
" <td>Gas limit: No problems with this really.\\nMeta...</td>\n",
" <td>First, use Truffle for unit testing.\\nSeries o...</td>\n",
" <td>Need a tool like metamask supporting state cha...</td>\n",
" <td>NaN</td>\n",
" <td>No real breakdown of how everything works toge...</td>\n",
" <td>Ours. Spankchain.</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Why are people building dapps instead of just ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>James Young</td>\n",
" <td>We had multiple audits at multiple periods of ...</td>\n",
" <td>Getting mainstream users onboarded. Informed b...</td>\n",
" <td>Work primarily with Spankchain, doing state ch...</td>\n",
" <td>We use Truffle, and Ganache on the web3 blockc...</td>\n",
" <td>When Im doing unit tests in Truffle, not know...</td>\n",
" <td>I test and retest. Wrote the auction contract ...</td>\n",
" <td>I wish and a hope there is bachelors in block...</td>\n",
" <td>NaN</td>\n",
" <td>Knowing what Gitter channels, Slack channels, ...</td>\n",
" <td>Actually having micropayments be a thing and s...</td>\n",
" <td>NaN</td>\n",
" <td>I would actually talk to operators that have s...</td>\n",
" <td>Depending on the background, a lot of it is ha...</td>\n",
" <td>Human behavioral things, what holds your feet ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>Doug Hoyte</td>\n",
" <td>Trying to keep everything as simple as possibl...</td>\n",
" <td>NaN</td>\n",
" <td>Doug Hoyte, working on sportcrypt.com, a sport...</td>\n",
" <td>web3.js, ethereumjs-util, solc, testrpc, parit...</td>\n",
" <td>Docs are usually out-of-date, plain wrong, or ...</td>\n",
" <td>Custom test harness, could never figure out ho...</td>\n",
" <td>Hmmm, a good light client implementation so ev...</td>\n",
" <td>NaN</td>\n",
" <td>Working around web3/metamask bugs</td>\n",
" <td>Building out our product, watching adoption gr...</td>\n",
" <td>Solidity is supposed to be completely awful so...</td>\n",
" <td>NaN</td>\n",
" <td>Not sure. Solidity docs are OK if you are tech...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>Ricardo Guillerme Schmidt</td>\n",
" <td>No major process. “This function should do one...</td>\n",
" <td>NaN</td>\n",
" <td>Development of smart contracts for Status.\\nCa...</td>\n",
" <td>Microsoft VS code, Git, Remix for manual tests...</td>\n",
" <td>Being unable to returns strings nicely. Regula...</td>\n",
" <td>Automated testing?\\nFirst develop the smart co...</td>\n",
" <td>Would be very good if VScode had the same thin...</td>\n",
" <td>NaN</td>\n",
" <td>Not sure, not actually difficult. If you under...</td>\n",
" <td>Excited about Golem. I really want to use it b...</td>\n",
" <td>NaN</td>\n",
" <td>Jordi Baylina, James from Status, Luis Cuende ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>Richard Ramos</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Smart contract developer at Status, also worki...</td>\n",
" <td>Embark, obviously!\\nNot just a framework for w...</td>\n",
" <td>Working with MetaMask and your local node/test...</td>\n",
" <td>Mostly through unit testing in Embark. I creat...</td>\n",
" <td>If I want to build things that are secure AND ...</td>\n",
" <td>Lets talk about Embark further. What do you s...</td>\n",
" <td>NaN</td>\n",
" <td>Status!!!\\nPlasma cash is really interesting a...</td>\n",
" <td>Learning solidity and writing your fist smart ...</td>\n",
" <td>NaN</td>\n",
" <td>Subreddit for ethdev and stack overflow, as al...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>Bob Summerwill</td>\n",
" <td>As good as that gets right now, there are vari...</td>\n",
" <td>Work for GUIs, development tools for GUIs. C...</td>\n",
" <td>Been involved with the Ethereum community sinc...</td>\n",
" <td>Most of his work has been on the platform work...</td>\n",
" <td>Where we are at now is a transition between am...</td>\n",
" <td>NaN</td>\n",
" <td>Interactive debugging. Truffle and Remix have ...</td>\n",
" <td>NaN</td>\n",
" <td>Where are the tools? Theres nothing, going ba...</td>\n",
" <td>I am excited about preaching about the end of ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Some universities starting to teach, Consensys...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>Yaniv Tal and Brandon Ramirez</td>\n",
" <td>Instead of statically linking contracts, you f...</td>\n",
" <td>We need to ask, what are the barriers to dapps...</td>\n",
" <td>Yaniv and Brandon from The Graph, query protoc...</td>\n",
" <td>Been using Truffle for Solidity. Remix on occa...</td>\n",
" <td>Artificial limitations in Solidity, number of ...</td>\n",
" <td>Write a lot of tests, try to make them as comp...</td>\n",
" <td>Pretty common for people to develop contracts ...</td>\n",
" <td>How have you found working on Aragon, esp. APM...</td>\n",
" <td>NaN</td>\n",
" <td>Plasma stuff. Obviously early days, but we wan...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>CryptoZombies, used to send people to Zasterin...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>Sina Habibian</td>\n",
" <td>A bunch of upfront discussions and security an...</td>\n",
" <td>NaN</td>\n",
" <td>I started in January or February of this year,...</td>\n",
" <td>Vim with solidity syntax highlighter, truffle ...</td>\n",
" <td>Super slow cycle due to testing.\\nAre you runn...</td>\n",
" <td>Truffle and Javascript unit tests\\nFirst perso...</td>\n",
" <td>Testing is so important in this space, but tes...</td>\n",
" <td>NaN</td>\n",
" <td>Wrapping my head around potential attacks and ...</td>\n",
" <td>TrueBit because it gives you the ability to ru...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Dan Finlay</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>Truffle Team</td>\n",
" <td>NaN</td>\n",
" <td>Set of tools: linters &amp; coverage tools\\nCritic...</td>\n",
" <td>NaN</td>\n",
" <td>Chris:\\nThe closer you are the foundation of t...</td>\n",
" <td>Its downstream on Etheruem and Web 3js; upstr...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Integration between truffle &amp; ganache?\\nWed l...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Currently we use Gitter. Every Truffle member ...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>Preethi Kasireddy</td>\n",
" <td>In the past, OpenZeppelin. Dont think well u...</td>\n",
" <td>Testing and debugging!\\nKey management stuff.</td>\n",
" <td>Im the founder and CEO of Trustory, an app th...</td>\n",
" <td>With Ethereum, for Trustory, we will write sma...</td>\n",
" <td>Not enough standard libs. Creating a dApp, the...</td>\n",
" <td>For JS, Mocha/Chai. In the past, used py-ether...</td>\n",
" <td>Debugging. We dont use Truffle, and if youre...</td>\n",
" <td>NaN</td>\n",
" <td>Everything. Nothing follows a standard.\\nBigge...</td>\n",
" <td>For my app to launch!\\nExcited for Casper, for...</td>\n",
" <td>NaN</td>\n",
" <td>Head of Tendermint, Zaki .\\nAntonio Juliano CE...</td>\n",
" <td>Read the Ethereum source code, read the Solidi...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>89</th>\n",
" <td>Alexey Akhunov</td>\n",
" <td>NaN</td>\n",
" <td>Unification of testnets[a].\\nRinkeby &amp; Kovan a...</td>\n",
" <td>Been in Ethereum since the beginning. Was foll...</td>\n",
" <td>Geth.\\nCan pass in --cpu-profile\\nUses basic s...</td>\n",
" <td>Yesterday spent 3 hours!!! fixing compiler...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Optimizing Geth:\\nIt all started with a rough ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Nick Johnson\\nPeter from Geth.\\nQuickblocks fo...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90</th>\n",
" <td>Simon de la Rouviere</td>\n",
" <td>NaN</td>\n",
" <td>Autonomous artist blueprint has existed for mo...</td>\n",
" <td>I have been in blockchain since 2013 working i...</td>\n",
" <td>I am the smart contract lead at Ujo, so spend ...</td>\n",
" <td>For me, its always been harder to evaluate th...</td>\n",
" <td>Mythril is very useful and we use it.\\nWriting...</td>\n",
" <td>One thing that comes to mind is a mature, ince...</td>\n",
" <td>What are the biggest challenges for Ethereum r...</td>\n",
" <td>NaN</td>\n",
" <td>Curation markets!\\nMore collectible stuff. The...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Google, gitter, ETH stack exchange.\\nSome Cons...</td>\n",
" <td>Curious about how we plan on dispersing the mo...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>91</th>\n",
" <td>Alvaro</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>VirtuePoker offchain game, smart contracts t...</td>\n",
" <td>NaN</td>\n",
" <td>Whisper\\nBuilding a p2p game. We tried using W...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>92</th>\n",
" <td>Javier Franco</td>\n",
" <td>NaN</td>\n",
" <td>How to simplify the way to calculate the gasPr...</td>\n",
" <td>VirtuePoker making the migration to the new...</td>\n",
" <td>NaN</td>\n",
" <td>Gas costs:\\nEthereum price increased, gas pric...</td>\n",
" <td>Testing our Dutch Auction ICO contract:\\nWe we...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>93</th>\n",
" <td>Rick Dudley</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>I worked on EthPM briefly.\\nI gave up in frust...</td>\n",
" <td>NaN</td>\n",
" <td>Lack of people over 40 naivete.\\nTrust and g...</td>\n",
" <td>I like the DappHub stuff; but its not fully i...</td>\n",
" <td>NaN</td>\n",
" <td>Bottom-up sharding scheme\\nAn app-sharding mod...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>94</th>\n",
" <td>Evan Van Ness</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Have only ever played around very early, but n...</td>\n",
" <td>NaN</td>\n",
" <td>Its tough for everybody in this space to bala...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Lets talk a little about why youre skeptical...</td>\n",
" <td>NaN</td>\n",
" <td>NexusMutual - on chain smart contract coverage...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>All the information used to be on Reddit, and ...</td>\n",
" <td>There are a lot of people with tools for thems...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>William Entriken</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Started using Ethereum in December.\\nCreated E...</td>\n",
" <td>NaN</td>\n",
" <td>The #1 problem:\\nMy mom wants to buy ETH. In o...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Lack of private/business incentive to solve Ba...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>Christopher Goes</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Wyvern is an application agnostic protocol for...</td>\n",
" <td>Solidity, Typescript, Truffle for deployment, ...</td>\n",
" <td>Solidity - I find it difficult to write comple...</td>\n",
" <td>Oyente\\nSolCoverage is super useful\\nJavascrip...</td>\n",
" <td>Local, easy Solidity interpreter\\nCurrently, t...</td>\n",
" <td>What are the barriers to Wyvern usability (by ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Introduction to Ethereum Medium post: https://...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>Matt Condon</td>\n",
" <td>Nothing, no real process besides following bes...</td>\n",
" <td>NaN</td>\n",
" <td>Built a raffle contract, but didnt ship it be...</td>\n",
" <td>Truffle, Infura, MetaMask, Etherscan, Remix, S...</td>\n",
" <td>Iteration cycle is slow, especially compared t...</td>\n",
" <td>Try not use truffle test.\\nNever written a sol...</td>\n",
" <td>Truffle has a lot of rough edges (documented e...</td>\n",
" <td>NaN</td>\n",
" <td>Mental model of how blockchains work. Also men...</td>\n",
" <td>Biggest hype tech is token-curated registries....</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>All of the people in Cape Town that I just met.</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>Ramon Recuero</td>\n",
" <td>Found a list of the top 10 security vulnerabil...</td>\n",
" <td>Having difficulty in hiring people most engi...</td>\n",
" <td>Last summer, developed Redis on Ethereum. Simp...</td>\n",
" <td>NaN</td>\n",
" <td>Was pleasantly surprised with Truffle - testin...</td>\n",
" <td>Redis had the smart contract. Made an npm libr...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Testing in Truffle.\\nIs simple if you come fro...</td>\n",
" <td>Blockchain Berkeley Lab professor working ...</td>\n",
" <td>Did Coursera course to implement blockchain, b...</td>\n",
" <td>Share your learnings, get the community back i...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>Facu Spagnuolo</td>\n",
" <td>NaN</td>\n",
" <td>For governance:\\nWe are still exploring which ...</td>\n",
" <td>I studied Computer Engineering and am a full s...</td>\n",
" <td>Truffle - I dont really like it, but have to ...</td>\n",
" <td>Speed of testing in Truffle is taking ~15min a...</td>\n",
" <td>We use Travis CI.\\nCoverall for coverage tests...</td>\n",
" <td>NaN</td>\n",
" <td>Upgradable smart contracts?\\nWeve been explor...</td>\n",
" <td>NaN</td>\n",
" <td>Zeppelin OS!!\\nReally excited to see a lot of ...</td>\n",
" <td>NaN</td>\n",
" <td>Fran Giordano from Zeppelin - knows a lot abou...</td>\n",
" <td>People in zeppelin are the best resources I ha...</td>\n",
" <td>I would love to know how people got involved a...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>100</th>\n",
" <td>Manuel Araoz</td>\n",
" <td>We design first then develop.\\nSometimes they ...</td>\n",
" <td>NaN</td>\n",
" <td>Open Zeppelin: open source smart contract fram...</td>\n",
" <td>Use the truffle toolkit the entire way. Truffl...</td>\n",
" <td>NaN</td>\n",
" <td>Truffle automated testing with javascript unit...</td>\n",
" <td>Upgradability\\nWere going to build an upgrada...</td>\n",
" <td>Interesting: Solidity compiler team runs OpenZ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Jorge from Aragon.\\nKevin Owocki from Gitcoin....</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>101</th>\n",
" <td>Brendan Chou</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>On chain derivatives for erc-20 tokens\\nOpen s...</td>\n",
" <td>Remix for smart contracts\\nWriting Javascript ...</td>\n",
" <td>Running tests in Truffle doesnt show you why/...</td>\n",
" <td>Mocha, js unit tests on Truffle</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Anything that helps us iterate faster. Tests c...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Solidity readthedocs, stack overflow, google s...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>102</th>\n",
" <td>Lane Rettig</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Core developer for EWASM, but independent and ...</td>\n",
" <td>Use vim, tmux and work way down in the protoco...</td>\n",
" <td>Testing - “is a nightmare.” The way it is done...</td>\n",
" <td>NaN</td>\n",
" <td>Working on evm2wasm in JS - we need to be able...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>WASM allows people to write contracts in non-E...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Solidity tutorials on ethereum.org was the pla...</td>\n",
" <td>Product management mindset is incredibly impor...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>103</th>\n",
" <td>Kames</td>\n",
" <td>The mainnet launch was very minimal. Using seg...</td>\n",
" <td>Education platform that is not focused on a bu...</td>\n",
" <td>I am working on uPort as a community a manager...</td>\n",
" <td>Eth.js, we use Nick Dodsons stuff. Inject web...</td>\n",
" <td>Personally, I dont have that many frustration...</td>\n",
" <td>We run a lot of unit tests on the JavaScript, ...</td>\n",
" <td>Drag and drop website builder for dApps, Im w...</td>\n",
" <td>NaN</td>\n",
" <td>Wrapping the head around everything in the eco...</td>\n",
" <td>The overwhelming amount of events. ETHGlobal i...</td>\n",
" <td>NaN</td>\n",
" <td>Linnia, they are doing market dataplaces for y...</td>\n",
" <td>Looms CryptoZombies and their general onboard...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>104 rows × 15 columns</p>\n",
"</div>"
],
"text/plain": [
" Name \\\n",
"0 Fabio Berger + Remco Bloemen \n",
"1 Leo Logvinov \n",
"2 Axel Ericsson \n",
"3 Mike Goldin \n",
"4 Oleksii \n",
"5 Brett Sun \n",
"6 Jorge Izquierdo \n",
"7 Jack Peterson and Sparkle \n",
"8 Joey Krug \n",
"9 Mark Beylin \n",
"10 Aidan Hyman \n",
"11 Greg, Stu, David \n",
"12 Jon Maurelian \n",
"13 Nick Dodson \n",
"14 Ilan Benbrith \n",
"15 Goncalo Sa \n",
"16 Fabiano, Jordan, Nick \n",
"17 Andy Milenius \n",
"18 Esteban Ordano \n",
"19 Matias Bargas \n",
"20 Nadav Hollander \n",
"21 Alex van de Sande \n",
"22 Nick Johnson \n",
"23 Elena Nadolinski \n",
"24 Swaroop \n",
"25 Alex Beregszazzi & Pawel Bylica \n",
"26 Christian Reitwiessner \n",
"27 Fabian Vogelsteller \n",
"28 Hudson Jameson \n",
"29 Martin Swende \n",
".. ... \n",
"74 Scott Wright \n",
"75 Felix Feng \n",
"76 Simon Jentzsch \n",
"77 Fernando G \n",
"78 Dandelion \n",
"79 David Wolever \n",
"80 James Young \n",
"81 Doug Hoyte \n",
"82 Ricardo Guillerme Schmidt \n",
"83 Richard Ramos \n",
"84 Bob Summerwill \n",
"85 Yaniv Tal and Brandon Ramirez \n",
"86 Sina Habibian \n",
"87 Truffle Team \n",
"88 Preethi Kasireddy \n",
"89 Alexey Akhunov \n",
"90 Simon de la Rouviere \n",
"91 Alvaro \n",
"92 Javier Franco \n",
"93 Rick Dudley \n",
"94 Evan Van Ness \n",
"95 William Entriken \n",
"96 Christopher Goes \n",
"97 Matt Condon \n",
"98 Ramon Recuero \n",
"99 Facu Spagnuolo \n",
"100 Manuel Araoz \n",
"101 Brendan Chou \n",
"102 Lane Rettig \n",
"103 Kames \n",
"\n",
" How do you handle smart contract verification and security? \\\n",
"0 Code audits before deployment\\nWant to add a f... \n",
"1 NaN \n",
"2 Human thinking and auditing.\\nWill find some e... \n",
"3 NaN \n",
"4 We have written our own tools which tell us, f... \n",
"5 Human audits only right now.\\nTrailofbits is r... \n",
"6 NaN \n",
"7 Pay others to think about it - no process yet.... \n",
"8 Yeah, encourage everyone to use auditors. Lots... \n",
"9 Consensys diligence is an auditing team availa... \n",
"10 NaN \n",
"11 Mythril, as mentioned above. \n",
"12 NaN \n",
"13 Mythril will be useful when in full bloom - ne... \n",
"14 Consensys Diligence provides some of the best ... \n",
"15 NaN \n",
"16 Audit code: bounty hunt program, found one maj... \n",
"17 NaN \n",
"18 NaN \n",
"19 NaN \n",
"20 Write down in plain text documents what the in... \n",
"21 NaN \n",
"22 Write a spec and define edge cases and corner ... \n",
"23 NaN \n",
"24 NaN \n",
"25 NaN \n",
"26 NaN \n",
"27 NaN \n",
"28 Use the Remix tool to just scan for general bu... \n",
"29 NaN \n",
".. ... \n",
"74 NaN \n",
"75 Contracted security auditing firm before launc... \n",
"76 NaN \n",
"77 I always try to keep myself on top of existing... \n",
"78 NaN \n",
"79 Front end: nothing really\\nDapp: went through ... \n",
"80 We had multiple audits at multiple periods of ... \n",
"81 Trying to keep everything as simple as possibl... \n",
"82 No major process. “This function should do one... \n",
"83 NaN \n",
"84 As good as that gets right now, there are vari... \n",
"85 Instead of statically linking contracts, you f... \n",
"86 A bunch of upfront discussions and security an... \n",
"87 NaN \n",
"88 In the past, OpenZeppelin. Dont think well u... \n",
"89 NaN \n",
"90 NaN \n",
"91 NaN \n",
"92 NaN \n",
"93 NaN \n",
"94 NaN \n",
"95 NaN \n",
"96 NaN \n",
"97 Nothing, no real process besides following bes... \n",
"98 Found a list of the top 10 security vulnerabil... \n",
"99 NaN \n",
"100 We design first then develop.\\nSometimes they ... \n",
"101 NaN \n",
"102 NaN \n",
"103 The mainnet launch was very minimal. Using seg... \n",
"\n",
" Other bounties? \\\n",
"0 Rest of the bounties from Remco\\nState-watchin... \n",
"1 There is a limit on local variable numbers (ha... \n",
"2 Breaking out a javascript library for web page... \n",
"3 Pretty cool to have more languages for the EVM... \n",
"4 NaN \n",
"5 NaN \n",
"6 Infura that is more decentralized. A full-node... \n",
"7 NaN \n",
"8 NaN \n",
"9 NaN \n",
"10 NaN \n",
"11 NaN \n",
"12 NaN \n",
"13 NaN \n",
"14 NaN \n",
"15 None come to mind right now. Lets keep the fo... \n",
"16 NaN \n",
"17 NaN \n",
"18 Biggest request: have ERC20 upgraded to ERC223... \n",
"19 NaN \n",
"20 A GREAT SOLIDITY DEBUGGER\\nA turnkey solution ... \n",
"21 Finding talented people is very hard. They are... \n",
"22 NaN \n",
"23 Documentation\\nDebugging, so helpful. A debugg... \n",
"24 NaN \n",
"25 NaN \n",
"26 Gas profiling:\\nSolidity does some upper-bound... \n",
"27 Need good IDEs:\\nRemix is good, but has proble... \n",
"28 Dev Grants from the Foundation\\nEthereum found... \n",
"29 NaN \n",
".. ... \n",
"74 NaN \n",
"75 Debugger\\nMore free automated formal verificat... \n",
"76 NaN \n",
"77 I think anything related to ease the whole lif... \n",
"78 NaN \n",
"79 NaN \n",
"80 Getting mainstream users onboarded. Informed b... \n",
"81 NaN \n",
"82 NaN \n",
"83 NaN \n",
"84 Work for GUIs, development tools for GUIs. C... \n",
"85 We need to ask, what are the barriers to dapps... \n",
"86 NaN \n",
"87 Set of tools: linters & coverage tools\\nCritic... \n",
"88 Testing and debugging!\\nKey management stuff. \n",
"89 Unification of testnets[a].\\nRinkeby & Kovan a... \n",
"90 Autonomous artist blueprint has existed for mo... \n",
"91 NaN \n",
"92 How to simplify the way to calculate the gasPr... \n",
"93 NaN \n",
"94 NaN \n",
"95 NaN \n",
"96 NaN \n",
"97 NaN \n",
"98 Having difficulty in hiring people most engi... \n",
"99 For governance:\\nWe are still exploring which ... \n",
"100 NaN \n",
"101 NaN \n",
"102 NaN \n",
"103 Education platform that is not focused on a bu... \n",
"\n",
" Who are you and what are you working on? \\\n",
"0 0x - Decentralized exchange protocol. It is a ... \n",
"1 Started in blockchain 2 years ago in Berlin, w... \n",
"2 I have built 1Protocol\\nIt lets smart contract... \n",
"3 Software developer at Consensys\\nKnown for Tok... \n",
"4 Started working with smart contracts in early ... \n",
"5 Working on Aragon entirely.\\nThe end goal is t... \n",
"6 Aragon - Decentralized Governance platform\\nWe... \n",
"7 NaN \n",
"8 Co-Chief Investment Officer at Pantera Capital... \n",
"9 Creator of the Bounties Network. Bounties on a... \n",
"10 Working with parity and geth and parity-bridge... \n",
"11 David: EVM layer stuff: interactions between o... \n",
"12 I work at Consensys Diligence doing audits; si... \n",
"13 Working on experimental infrastructure. ARES, ... \n",
"14 Im the Technical PM at Consensys Academy work... \n",
"15 I work at Consensys Diligence - focus on secur... \n",
"16 Cryptokitties! Goals they have are to get mult... \n",
"17 DappHub:\\nWorking on dev tools since I got int... \n",
"18 Im hiring two or three people excellent eng... \n",
"19 I used to be an investor, but came to crypto a... \n",
"20 Building Dharma - open protocol for tokenized ... \n",
"21 Working on Mist, the Ethereum browser.\\nDevelo... \n",
"22 ENS: documentation, smart contracts, UIs,\\nAu... \n",
"23 Last 6 months have been working on Solidity, E... \n",
"24 We are building EthVigil an API gateway to to ... \n",
"25 Pawel - focused on VM in general, spent a lot ... \n",
"26 90% of my time: design of Solidity language an... \n",
"27 My future project: Lukso blockchain: EVM-based... \n",
"28 Mainly focused on solidity smart contracts. A ... \n",
"29 I was a security professional, doing consultin... \n",
".. ... \n",
"74 Just simple stuff - proofs of concept.\\nWorkin... \n",
"75 Founder of Set Protocol, wrote all the smart c... \n",
"76 CTO of SlockIt.\\nDaily standups like any other... \n",
"77 I am a developer, working in London for the la... \n",
"78 SourcCred - bounties and reputation for open s... \n",
"79 Been working with Spankchain team. Combination... \n",
"80 Work primarily with Spankchain, doing state ch... \n",
"81 Doug Hoyte, working on sportcrypt.com, a sport... \n",
"82 Development of smart contracts for Status.\\nCa... \n",
"83 Smart contract developer at Status, also worki... \n",
"84 Been involved with the Ethereum community sinc... \n",
"85 Yaniv and Brandon from The Graph, query protoc... \n",
"86 I started in January or February of this year,... \n",
"87 NaN \n",
"88 Im the founder and CEO of Trustory, an app th... \n",
"89 Been in Ethereum since the beginning. Was foll... \n",
"90 I have been in blockchain since 2013 working i... \n",
"91 VirtuePoker offchain game, smart contracts t... \n",
"92 VirtuePoker making the migration to the new... \n",
"93 I worked on EthPM briefly.\\nI gave up in frust... \n",
"94 Have only ever played around very early, but n... \n",
"95 Started using Ethereum in December.\\nCreated E... \n",
"96 Wyvern is an application agnostic protocol for... \n",
"97 Built a raffle contract, but didnt ship it be... \n",
"98 Last summer, developed Redis on Ethereum. Simp... \n",
"99 I studied Computer Engineering and am a full s... \n",
"100 Open Zeppelin: open source smart contract fram... \n",
"101 On chain derivatives for erc-20 tokens\\nOpen s... \n",
"102 Core developer for EWASM, but independent and ... \n",
"103 I am working on uPort as a community a manager... \n",
"\n",
" What are the tools/libraries/frameworks you use? \\\n",
"0 EthereumJS / truffle hardwallet provider / Typ... \n",
"1 NaN \n",
"2 Just web3JS and the python raiden client \n",
"3 Truffle, useful as a testing framework.\\nSolid... \n",
"4 NaN \n",
"5 Four categories:\\nEVM and lower level stuff:\\n... \n",
"6 NaN \n",
"7 Back-end: Visual Studio Code with docker image... \n",
"8 At Augur, stack is different as its a bit old... \n",
"9 I know and use the solium linter.\\nUse truffle... \n",
"10 Truffle\\nLack of modularity is the biggest pro... \n",
"11 JetBrains suite as an IDE. Remix comes in ther... \n",
"12 We use Truffle a lot (never had to use Dapple ... \n",
"13 Solidity Compiler\\nThe C version is very fast ... \n",
"14 Truffle, Ganache, Remix, Metamask etc.\\nFront ... \n",
"15 I used to use Remix a lot more than I do today... \n",
"16 Been a while since we have done smart contract... \n",
"17 NaN \n",
"18 NaN \n",
"19 The whole Ethereum stack, basically.\\nTruffle\\... \n",
"20 I like to use Typescript for testing.\\n0x team... \n",
"21 NaN \n",
"22 Open Zeppelin tools are increasingly good. But... \n",
"23 Use Truffle because its by far the best frame... \n",
"24 Mostly custom tools. Started with web3, starte... \n",
"25 NaN \n",
"26 NaN \n",
"27 Web3.js\\nHistory:\\nInitially, it was built by ... \n",
"28 Remix, MyEtherWallet, MetaMask \n",
"29 NaN \n",
".. ... \n",
"74 Remix\\nGeth obviously\\nSolC for compiling\\nYar... \n",
"75 Internal javascript library in Typescript for ... \n",
"76 Start with Truffle - mainly for testing and se... \n",
"77 Well, it depends, when I build tools related t... \n",
"78 NaN \n",
"79 Vim editor, truffle. Metamask.\\nSwitching over... \n",
"80 We use Truffle, and Ganache on the web3 blockc... \n",
"81 web3.js, ethereumjs-util, solc, testrpc, parit... \n",
"82 Microsoft VS code, Git, Remix for manual tests... \n",
"83 Embark, obviously!\\nNot just a framework for w... \n",
"84 Most of his work has been on the platform work... \n",
"85 Been using Truffle for Solidity. Remix on occa... \n",
"86 Vim with solidity syntax highlighter, truffle ... \n",
"87 Chris:\\nThe closer you are the foundation of t... \n",
"88 With Ethereum, for Trustory, we will write sma... \n",
"89 Geth.\\nCan pass in --cpu-profile\\nUses basic s... \n",
"90 I am the smart contract lead at Ujo, so spend ... \n",
"91 NaN \n",
"92 NaN \n",
"93 NaN \n",
"94 NaN \n",
"95 NaN \n",
"96 Solidity, Typescript, Truffle for deployment, ... \n",
"97 Truffle, Infura, MetaMask, Etherscan, Remix, S... \n",
"98 NaN \n",
"99 Truffle - I dont really like it, but have to ... \n",
"100 Use the truffle toolkit the entire way. Truffl... \n",
"101 Remix for smart contracts\\nWriting Javascript ... \n",
"102 Use vim, tmux and work way down in the protoco... \n",
"103 Eth.js, we use Nick Dodsons stuff. Inject web... \n",
"\n",
" What are your biggest frustrations? \\\n",
"0 Getting a simple experimental environment up i... \n",
"1 Event watching - unreliable, no support for ba... \n",
"2 NaN \n",
"3 Truffles debugger is a bit disappointing. Wor... \n",
"4 Our original vision was to do everything tes... \n",
"5 My biggest general frustration comes with the ... \n",
"6 NaN \n",
"7 Lack of a debugger - by far the biggest issue.... \n",
"8 At the end of the day, it all comes down to th... \n",
"9 Not being able to upgrade my contracts easily.... \n",
"10 NaN \n",
"11 Up to date documentation!!\\nSystem dependence ... \n",
"12 Auditing:\\nA lot of my time is spent understan... \n",
"13 Data verifiability problem - nobody is going t... \n",
"14 Gas and fees is a common frustration, given th... \n",
"15 I really, really want a good visual debugger. ... \n",
"16 The lack of proper debugging support. That cau... \n",
"17 Ethereum relies heavily on Javascript dev tool... \n",
"18 NaN \n",
"19 Real monitoring information is tough to come b... \n",
"20 NaN \n",
"21 Securing Electron (desktop JS) was hard. (JS i... \n",
"22 NaN \n",
"23 Lack of error messages, since Solidity 24 you ... \n",
"24 NaN \n",
"25 Communication is bad within EF and within ecos... \n",
"26 NaN \n",
"27 NaN \n",
"28 Hard to read error messages. Solidity and EVM ... \n",
"29 Definitely a need for more developers, either ... \n",
".. ... \n",
"74 Hasnt happened across too much yet! Been work... \n",
"75 Truffle migrate on main net\\nWeird configurati... \n",
"76 IDE integration\\nThere are tools and plugins f... \n",
"77 Maybe it is my fault, but I would like to see ... \n",
"78 Highly adversarial environment makes it hard t... \n",
"79 Gas limit: No problems with this really.\\nMeta... \n",
"80 When Im doing unit tests in Truffle, not know... \n",
"81 Docs are usually out-of-date, plain wrong, or ... \n",
"82 Being unable to returns strings nicely. Regula... \n",
"83 Working with MetaMask and your local node/test... \n",
"84 Where we are at now is a transition between am... \n",
"85 Artificial limitations in Solidity, number of ... \n",
"86 Super slow cycle due to testing.\\nAre you runn... \n",
"87 Its downstream on Etheruem and Web 3js; upstr... \n",
"88 Not enough standard libs. Creating a dApp, the... \n",
"89 Yesterday spent 3 hours!!! fixing compiler... \n",
"90 For me, its always been harder to evaluate th... \n",
"91 Whisper\\nBuilding a p2p game. We tried using W... \n",
"92 Gas costs:\\nEthereum price increased, gas pric... \n",
"93 Lack of people over 40 naivete.\\nTrust and g... \n",
"94 Its tough for everybody in this space to bala... \n",
"95 The #1 problem:\\nMy mom wants to buy ETH. In o... \n",
"96 Solidity - I find it difficult to write comple... \n",
"97 Iteration cycle is slow, especially compared t... \n",
"98 Was pleasantly surprised with Truffle - testin... \n",
"99 Speed of testing in Truffle is taking ~15min a... \n",
"100 NaN \n",
"101 Running tests in Truffle doesnt show you why/... \n",
"102 Testing - “is a nightmare.” The way it is done... \n",
"103 Personally, I dont have that many frustration... \n",
"\n",
" How do you handle testing? \\\n",
"0 Testrpc has gotten better \\nIncreases the sp... \n",
"1 NaN \n",
"2 Truffle suite. Before that, built our own unit... \n",
"3 Writes tests in Javascript\\nSol Coverage tool\\... \n",
"4 NaN \n",
"5 In addition to the above we also use solidity-... \n",
"6 NaN \n",
"7 NaN \n",
"8 Run against pyethereum. Test suite is written ... \n",
"9 Mocha tests using Truffle and testrpc.\\nAlso u... \n",
"10 Talk with Stu, who handles all the testing stu... \n",
"11 Mostly unit tests in mocha and chai.\\nMostly u... \n",
"12 NaN \n",
"13 NaN \n",
"14 Truffle testing\\nBest practices resources \n",
"15 Remix, Surya and Mythril as above.\\nVery small... \n",
"16 Standard testing and using community to audit ... \n",
"17 NaN \n",
"18 NaN \n",
"19 NaN \n",
"20 Truffle to write JS unit tests.\\n** There are ... \n",
"21 People build new features, we check, and then ... \n",
"22 Truffle unit testing with mocha\\nAdded built i... \n",
"23 Truffle for testing. Force people to do TTD in... \n",
"24 Basic unit tests, integration testing. So much... \n",
"25 NaN \n",
"26 NaN \n",
"27 NaN \n",
"28 Have been using Truffle more lately but was mo... \n",
"29 NaN \n",
".. ... \n",
"74 Automated testing?\\nTheres an IDE that Ive u... \n",
"75 Started with truffle tests\\nThen converted tes... \n",
"76 NaN \n",
"77 For unit testing I use truffle, I write JavaSc... \n",
"78 NaN \n",
"79 First, use Truffle for unit testing.\\nSeries o... \n",
"80 I test and retest. Wrote the auction contract ... \n",
"81 Custom test harness, could never figure out ho... \n",
"82 Automated testing?\\nFirst develop the smart co... \n",
"83 Mostly through unit testing in Embark. I creat... \n",
"84 NaN \n",
"85 Write a lot of tests, try to make them as comp... \n",
"86 Truffle and Javascript unit tests\\nFirst perso... \n",
"87 NaN \n",
"88 For JS, Mocha/Chai. In the past, used py-ether... \n",
"89 NaN \n",
"90 Mythril is very useful and we use it.\\nWriting... \n",
"91 NaN \n",
"92 Testing our Dutch Auction ICO contract:\\nWe we... \n",
"93 I like the DappHub stuff; but its not fully i... \n",
"94 NaN \n",
"95 NaN \n",
"96 Oyente\\nSolCoverage is super useful\\nJavascrip... \n",
"97 Try not use truffle test.\\nNever written a sol... \n",
"98 Redis had the smart contract. Made an npm libr... \n",
"99 We use Travis CI.\\nCoverall for coverage tests... \n",
"100 Truffle automated testing with javascript unit... \n",
"101 Mocha, js unit tests on Truffle \n",
"102 NaN \n",
"103 We run a lot of unit tests on the JavaScript, ... \n",
"\n",
" What tools dont exist at the moment? \\\n",
"0 NaN \n",
"1 Prettier type plugin for solidity. I dont hav... \n",
"2 There is no tooling or anything related to sta... \n",
"3 Fuzz Testing and formal verification desired. \n",
"4 NaN \n",
"5 A nice debugger! Please…\\nMore infrastructure ... \n",
"6 NaN \n",
"7 Setting breakpoints in tests!\\nSalesforce Deve... \n",
"8 My answers changed over a time, 1 year ago it ... \n",
"9 Better querying possibilities on the state of ... \n",
"10 Mythril for the EVM stack. Rewrite a complete ... \n",
"11 EVMLab certainly has some of the features requ... \n",
"12 NaN \n",
"13 NaN \n",
"14 Drizzle is a really cool idea for front-end de... \n",
"15 A proper, local dummy client. I love the Truff... \n",
"16 2 main areas with significant problems:\\nData ... \n",
"17 NaN \n",
"18 NaN \n",
"19 Starting from the infrastructure stuff: we nee... \n",
"20 Good logging and debugging\\nSetting up your ow... \n",
"21 NaN \n",
"22 Byzantium added return data size (prevents arb... \n",
"23 A lot of tools exist but arent being utilized... \n",
"24 Web3 is a library to make it easier for a lot ... \n",
"25 NaN \n",
"26 NaN \n",
"27 NaN \n",
"28 Remix combines an editor with a deployment mec... \n",
"29 NaN \n",
".. ... \n",
"74 Automated testing - I want a testing suite, a ... \n",
"75 Debugger. Especially as contracts start linkin... \n",
"76 Scalability is long-hoped for and looked forwa... \n",
"77 Good question, there is a lot of ecosystem tha... \n",
"78 At core abstractions layer. If SourceCred depe... \n",
"79 Need a tool like metamask supporting state cha... \n",
"80 I wish and a hope there is bachelors in block... \n",
"81 Hmmm, a good light client implementation so ev... \n",
"82 Would be very good if VScode had the same thin... \n",
"83 If I want to build things that are secure AND ... \n",
"84 Interactive debugging. Truffle and Remix have ... \n",
"85 Pretty common for people to develop contracts ... \n",
"86 Testing is so important in this space, but tes... \n",
"87 NaN \n",
"88 Debugging. We dont use Truffle, and if youre... \n",
"89 NaN \n",
"90 One thing that comes to mind is a mature, ince... \n",
"91 NaN \n",
"92 NaN \n",
"93 NaN \n",
"94 NaN \n",
"95 NaN \n",
"96 Local, easy Solidity interpreter\\nCurrently, t... \n",
"97 Truffle has a lot of rough edges (documented e... \n",
"98 NaN \n",
"99 NaN \n",
"100 Upgradability\\nWere going to build an upgrada... \n",
"101 NaN \n",
"102 Working on evm2wasm in JS - we need to be able... \n",
"103 Drag and drop website builder for dApps, Im w... \n",
"\n",
" Other domain specific questions? \\\n",
"0 NaN \n",
"1 What has your experience been like working on ... \n",
"2 NaN \n",
"3 NaN \n",
"4 What are other great tools you have used?\\nEth... \n",
"5 NaN \n",
"6 Tell us more about getting deep into the EVM?\\... \n",
"7 Lets talk specifically about UI issues / scal... \n",
"8 Would be useful if the Ethereum project could ... \n",
"9 NaN \n",
"10 NaN \n",
"11 NaN \n",
"12 NaN \n",
"13 Tell us more about TCRs and DAOs?\\nThere are m... \n",
"14 NaN \n",
"15 What are the details/patterns in smart contrac... \n",
"16 Have you written any open source tools for sca... \n",
"17 NaN \n",
"18 NaN \n",
"19 NaN \n",
"20 NaN \n",
"21 NaN \n",
"22 NaN \n",
"23 NaN \n",
"24 NaN \n",
"25 NaN \n",
"26 Tell us more about computational scalability o... \n",
"27 NaN \n",
"28 NaN \n",
"29 NaN \n",
".. ... \n",
"74 NaN \n",
"75 NaN \n",
"76 IOT security challenges?\\nUse blockchain to en... \n",
"77 NaN \n",
"78 NaN \n",
"79 NaN \n",
"80 NaN \n",
"81 NaN \n",
"82 NaN \n",
"83 Lets talk about Embark further. What do you s... \n",
"84 NaN \n",
"85 How have you found working on Aragon, esp. APM... \n",
"86 NaN \n",
"87 Integration between truffle & ganache?\\nWed l... \n",
"88 NaN \n",
"89 Optimizing Geth:\\nIt all started with a rough ... \n",
"90 What are the biggest challenges for Ethereum r... \n",
"91 NaN \n",
"92 NaN \n",
"93 Bottom-up sharding scheme\\nAn app-sharding mod... \n",
"94 Lets talk a little about why youre skeptical... \n",
"95 Lack of private/business incentive to solve Ba... \n",
"96 What are the barriers to Wyvern usability (by ... \n",
"97 NaN \n",
"98 NaN \n",
"99 Upgradable smart contracts?\\nWeve been explor... \n",
"100 Interesting: Solidity compiler team runs OpenZ... \n",
"101 NaN \n",
"102 NaN \n",
"103 NaN \n",
"\n",
" What was the hardest part about learning to develop with Ethereum? \\\n",
"0 NaN \n",
"1 NaN \n",
"2 Solidity is changing so quickly that, as an ex... \n",
"3 Hardest part is learning to develop in a block... \n",
"4 NaN \n",
"5 NaN \n",
"6 NaN \n",
"7 What steps do I need to follow to write these ... \n",
"8 NaN \n",
"9 Didnt understand the stack. People dont unde... \n",
"10 NaN \n",
"11 Greg: Looked at web3 documentation (as it was ... \n",
"12 NaN \n",
"13 NaN \n",
"14 NaN \n",
"15 NaN \n",
"16 The real problems come into play when you are ... \n",
"17 NaN \n",
"18 Pains:\\nThe gas issues the expensiveness of ... \n",
"19 NaN \n",
"20 NaN \n",
"21 One dev working on a backend integration I s... \n",
"22 Becoming familiar with the execution model\\nYo... \n",
"23 Its a myth for how hard it is. “Im a Solidit... \n",
"24 The first thing I built was a tool that looks ... \n",
"25 NaN \n",
"26 NaN \n",
"27 NaN \n",
"28 The resources are pretty spread out, and every... \n",
"29 NaN \n",
".. ... \n",
"74 Would have been that initial setup of the deve... \n",
"75 Truffle needs to be easier for beginners. Toug... \n",
"76 NaN \n",
"77 NaN \n",
"78 NaN \n",
"79 No real breakdown of how everything works toge... \n",
"80 Knowing what Gitter channels, Slack channels, ... \n",
"81 Working around web3/metamask bugs \n",
"82 Not sure, not actually difficult. If you under... \n",
"83 NaN \n",
"84 Where are the tools? Theres nothing, going ba... \n",
"85 NaN \n",
"86 Wrapping my head around potential attacks and ... \n",
"87 NaN \n",
"88 Everything. Nothing follows a standard.\\nBigge... \n",
"89 NaN \n",
"90 NaN \n",
"91 NaN \n",
"92 NaN \n",
"93 NaN \n",
"94 NaN \n",
"95 NaN \n",
"96 NaN \n",
"97 Mental model of how blockchains work. Also men... \n",
"98 NaN \n",
"99 NaN \n",
"100 NaN \n",
"101 NaN \n",
"102 NaN \n",
"103 Wrapping the head around everything in the eco... \n",
"\n",
" What are you most excited about in the short term? \\\n",
"0 NaN \n",
"1 NaN \n",
"2 Raiden is the golden egg in the space. The exp... \n",
"3 Excited for Casper\\nApplications implemented i... \n",
"4 NaN \n",
"5 NaN \n",
"6 NaN \n",
"7 Raiden is coming shortly and will be very cool... \n",
"8 In the short term, hes most excited about Mak... \n",
"9 Sharding. Thats all I want.\\nuPort is getting... \n",
"10 Two of our most exciting projects:\\nShift - de... \n",
"11 NaN \n",
"12 NaN \n",
"13 NaN \n",
"14 NaN \n",
"15 NaN \n",
"16 The thing we are excited about most in the nex... \n",
"17 NaN \n",
"18 NaN \n",
"19 The Decentraland client!! Woot woot.\\nSomethin... \n",
"20 NaN \n",
"21 NaN \n",
"22 NaN \n",
"23 Quitting her job to start her own project so v... \n",
"24 We built a platform to help people use blockch... \n",
"25 NaN \n",
"26 NaN \n",
"27 NaN \n",
"28 Casper. Its already kind of going into testin... \n",
"29 NaN \n",
".. ... \n",
"74 Vyper!\\nHave big hopes for truffle - has a lot... \n",
"75 Ethereum proof of stake\\n0x open source tools.... \n",
"76 NaN \n",
"77 Scalability improvements. I want sharding and ... \n",
"78 NaN \n",
"79 Ours. Spankchain. \n",
"80 Actually having micropayments be a thing and s... \n",
"81 Building out our product, watching adoption gr... \n",
"82 Excited about Golem. I really want to use it b... \n",
"83 Status!!!\\nPlasma cash is really interesting a... \n",
"84 I am excited about preaching about the end of ... \n",
"85 Plasma stuff. Obviously early days, but we wan... \n",
"86 TrueBit because it gives you the ability to ru... \n",
"87 NaN \n",
"88 For my app to launch!\\nExcited for Casper, for... \n",
"89 NaN \n",
"90 Curation markets!\\nMore collectible stuff. The... \n",
"91 NaN \n",
"92 NaN \n",
"93 NaN \n",
"94 NexusMutual - on chain smart contract coverage... \n",
"95 NaN \n",
"96 NaN \n",
"97 Biggest hype tech is token-curated registries.... \n",
"98 NaN \n",
"99 Zeppelin OS!!\\nReally excited to see a lot of ... \n",
"100 NaN \n",
"101 Anything that helps us iterate faster. Tests c... \n",
"102 WASM allows people to write contracts in non-E... \n",
"103 The overwhelming amount of events. ETHGlobal i... \n",
"\n",
" Was anything easier than expected? \\\n",
"0 NaN \n",
"1 NaN \n",
"2 Writing smart contracts is surprisingly neat. ... \n",
"3 Whats really easy is programming money.\\nOn b... \n",
"4 NaN \n",
"5 NaN \n",
"6 NaN \n",
"7 NaN \n",
"8 NaN \n",
"9 NaN \n",
"10 NaN \n",
"11 Community! Going to EDCON was an eye-opening, ... \n",
"12 NaN \n",
"13 NaN \n",
"14 Were still so early on but we hope to incorpo... \n",
"15 NaN \n",
"16 NaN \n",
"17 NaN \n",
"18 NaN \n",
"19 No, not really.\\nActually, extending the open ... \n",
"20 NaN \n",
"21 NaN \n",
"22 NaN \n",
"23 NaN \n",
"24 NaN \n",
"25 NaN \n",
"26 NaN \n",
"27 NaN \n",
"28 NaN \n",
"29 NaN \n",
".. ... \n",
"74 NaN \n",
"75 MVP versions of product are easy. Handling all... \n",
"76 NaN \n",
"77 NaN \n",
"78 NaN \n",
"79 NaN \n",
"80 NaN \n",
"81 Solidity is supposed to be completely awful so... \n",
"82 NaN \n",
"83 Learning solidity and writing your fist smart ... \n",
"84 NaN \n",
"85 NaN \n",
"86 NaN \n",
"87 NaN \n",
"88 NaN \n",
"89 NaN \n",
"90 NaN \n",
"91 NaN \n",
"92 NaN \n",
"93 NaN \n",
"94 NaN \n",
"95 NaN \n",
"96 NaN \n",
"97 NaN \n",
"98 Testing in Truffle.\\nIs simple if you come fro... \n",
"99 NaN \n",
"100 NaN \n",
"101 NaN \n",
"102 NaN \n",
"103 NaN \n",
"\n",
" Who are the other people you think we should talk to? \\\n",
"0 NaN \n",
"1 NaN \n",
"2 NaN \n",
"3 Infura team, client development\\nSpankchain - ... \n",
"4 NaN \n",
"5 NaN \n",
"6 NaN \n",
"7 NaN \n",
"8 NaN \n",
"9 Joseph Vander (learning the be a solidity deve... \n",
"10 NaN \n",
"11 NaN \n",
"12 Piper Merriam\\nNick Johnson\\nChristian Lundkvi... \n",
"13 NaN \n",
"14 NaN \n",
"15 Bernard Miller from our team, focussed entirel... \n",
"16 NaN \n",
"17 NaN \n",
"18 Should speak with Fede should collaborate t... \n",
"19 NaN \n",
"20 NaN \n",
"21 Nick Johnson\\nRyan Zurrer \n",
"22 NaN \n",
"23 Christopher Gewecke, Wyvern team \n",
"24 NaN \n",
"25 NaN \n",
"26 NaN \n",
"27 NaN \n",
"28 Raine Revere from ShapeShift \n",
"29 NaN \n",
".. ... \n",
"74 NaN \n",
"75 NaN \n",
"76 NaN \n",
"77 Hmm not sure if you spoke to Bernhard Mueller,... \n",
"78 NaN \n",
"79 NaN \n",
"80 I would actually talk to operators that have s... \n",
"81 NaN \n",
"82 Jordi Baylina, James from Status, Luis Cuende ... \n",
"83 NaN \n",
"84 NaN \n",
"85 NaN \n",
"86 NaN \n",
"87 NaN \n",
"88 Head of Tendermint, Zaki .\\nAntonio Juliano CE... \n",
"89 Nick Johnson\\nPeter from Geth.\\nQuickblocks fo... \n",
"90 NaN \n",
"91 NaN \n",
"92 NaN \n",
"93 NaN \n",
"94 NaN \n",
"95 NaN \n",
"96 NaN \n",
"97 NaN \n",
"98 Blockchain Berkeley Lab professor working ... \n",
"99 Fran Giordano from Zeppelin - knows a lot abou... \n",
"100 Jorge from Aragon.\\nKevin Owocki from Gitcoin.... \n",
"101 NaN \n",
"102 NaN \n",
"103 Linnia, they are doing market dataplaces for y... \n",
"\n",
" What are the best educational resources? \\\n",
"0 NaN \n",
"1 NaN \n",
"2 NaN \n",
"3 Solidity Docs\\nUses yellow paper gass lookup t... \n",
"4 NaN \n",
"5 Google + Github is my go to.\\nNot enough has b... \n",
"6 NaN \n",
"7 NaN \n",
"8 Back then documentation was very sparse, blogs... \n",
"9 NaN \n",
"10 Honestly just readthedocs, gitter channels and... \n",
"11 NaN \n",
"12 NaN \n",
"13 NaN \n",
"14 Youtube videos\\nConferences and Meetups - putt... \n",
"15 I do this less frequently now, but I basically... \n",
"16 Solidity documentation was quite good. Had all... \n",
"17 NaN \n",
"18 NaN \n",
"19 I came from a strange backend doing tooling fo... \n",
"20 NaN \n",
"21 NaN \n",
"22 NaN \n",
"23 Personally found a couple Medium articles here... \n",
"24 Barely anything with tutorials when they got s... \n",
"25 NaN \n",
"26 NaN \n",
"27 NaN \n",
"28 NaN \n",
"29 NaN \n",
".. ... \n",
"74 NaN \n",
"75 Consensys Academy\\nTruffle/Solidity documentat... \n",
"76 Having people around, trying new things, debug... \n",
"77 I would say no books, because they get outdate... \n",
"78 CryptoZombies really improved my intuition. \n",
"79 NaN \n",
"80 Depending on the background, a lot of it is ha... \n",
"81 Not sure. Solidity docs are OK if you are tech... \n",
"82 NaN \n",
"83 Subreddit for ethdev and stack overflow, as al... \n",
"84 Some universities starting to teach, Consensys... \n",
"85 CryptoZombies, used to send people to Zasterin... \n",
"86 NaN \n",
"87 Currently we use Gitter. Every Truffle member ... \n",
"88 Read the Ethereum source code, read the Solidi... \n",
"89 NaN \n",
"90 Google, gitter, ETH stack exchange.\\nSome Cons... \n",
"91 NaN \n",
"92 NaN \n",
"93 NaN \n",
"94 All the information used to be on Reddit, and ... \n",
"95 NaN \n",
"96 Introduction to Ethereum Medium post: https://... \n",
"97 NaN \n",
"98 Did Coursera course to implement blockchain, b... \n",
"99 People in zeppelin are the best resources I ha... \n",
"100 NaN \n",
"101 Solidity readthedocs, stack overflow, google s... \n",
"102 Solidity tutorials on ethereum.org was the pla... \n",
"103 Looms CryptoZombies and their general onboard... \n",
"\n",
" Are there any other questions we should be asking? \n",
"0 NaN \n",
"1 NaN \n",
"2 NaN \n",
"3 NaN \n",
"4 NaN \n",
"5 NaN \n",
"6 NaN \n",
"7 NaN \n",
"8 NaN \n",
"9 Curious to know about developer incentives. As... \n",
"10 NaN \n",
"11 Where do we actually find out more about all t... \n",
"12 NaN \n",
"13 NaN \n",
"14 NaN \n",
"15 NaN \n",
"16 NaN \n",
"17 How can Ethereum create more cultural norms an... \n",
"18 NaN \n",
"19 NaN \n",
"20 “What is the thing that makes debugging solidi... \n",
"21 NaN \n",
"22 NaN \n",
"23 Real world companies that are not tech savvy c... \n",
"24 NaN \n",
"25 NaN \n",
"26 NaN \n",
"27 NaN \n",
"28 NaN \n",
"29 NaN \n",
".. ... \n",
"74 NaN \n",
"75 NaN \n",
"76 NaN \n",
"77 NaN \n",
"78 NaN \n",
"79 Why are people building dapps instead of just ... \n",
"80 Human behavioral things, what holds your feet ... \n",
"81 NaN \n",
"82 NaN \n",
"83 NaN \n",
"84 NaN \n",
"85 NaN \n",
"86 Dan Finlay \n",
"87 NaN \n",
"88 NaN \n",
"89 NaN \n",
"90 Curious about how we plan on dispersing the mo... \n",
"91 NaN \n",
"92 NaN \n",
"93 NaN \n",
"94 There are a lot of people with tools for thems... \n",
"95 NaN \n",
"96 NaN \n",
"97 All of the people in Cape Town that I just met. \n",
"98 Share your learnings, get the community back i... \n",
"99 I would love to know how people got involved a... \n",
"100 NaN \n",
"101 NaN \n",
"102 Product management mindset is incredibly impor... \n",
"103 NaN \n",
"\n",
"[104 rows x 15 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:47.719551Z",
"start_time": "2018-07-18T16:29:47.709888Z"
}
},
"outputs": [],
"source": [
"df.columns = [\n",
" 'name', # Name\n",
" 'smart_contract', # How do you handle smart contract verif & security?\n",
" 'bounties', # Other bounties\n",
" 'who_what', # Who are you and what are you working on?\n",
" 'tooling', # What are the tools/libraries/frameworks you use?\n",
" 'frustrations', # What are your biggest frustrations?\n",
" 'testing', # How do you handle testing?\n",
" 'missing_tools', # What tools dont exist at the moment?\n",
" 'domain_questions', # Other domain specific questions?\n",
" 'hardest_part', # What was the hardest part to develop with Ethereum?\n",
" 'excited_about', # What are you most excited about in the short term?\n",
" 'easier_expected', # Was anything easier than expected?\n",
" 'people_talk_to', # Who do you think we should talk to?\n",
" 'best_resources', # What are the best educational resources?\n",
" 'questions_to_ask' # Are there any other questions we should be asking?\n",
"]\n",
"\n",
"df.fillna('', inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:47.724787Z",
"start_time": "2018-07-18T16:29:47.720798Z"
}
},
"outputs": [],
"source": [
"# For some reason Python or Excel adds an invisible unicode \\ufeff character.\n",
"df['name'] = df['name'].str.replace(u'\\ufeff', '')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Handcrafting Ethereum vocabulary"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:48.801128Z",
"start_time": "2018-07-18T16:29:47.726052Z"
}
},
"outputs": [],
"source": [
"eth_keywords = {\n",
" # Who are you and what are you working on?\n",
" '0x',\n",
" 'decentralized_exchange',\n",
" 'dex',\n",
" 'decentralization',\n",
" 'smart_contract',\n",
" 'solidity',\n",
" 'truffle',\n",
" '1protocol',\n",
" 'proof_of_stake',\n",
" 'proof_stake',\n",
" 'pos',\n",
" 'mining_pool',\n",
" 'staking_pool',\n",
" 'signature',\n",
" 'token',\n",
" 'raiden',\n",
" 'api',\n",
" 'client',\n",
" 'consensys',\n",
" 'token_curated_registries',\n",
" 'tcr',\n",
" 'adchain',\n",
" 'onboarding',\n",
" 'test',\n",
" 'ambisafe',\n",
" 'scalable',\n",
" 'platform',\n",
" 'devops',\n",
" 'javascript',\n",
" 'js',\n",
" 'tx',\n",
" 'transactions',\n",
" 'parity',\n",
" 'deployment',\n",
" 'gas',\n",
" 'aragon',\n",
" 'aragon_os',\n",
" 'organization',\n",
" 'network',\n",
" 'permission',\n",
" 'governance',\n",
" 'acl',\n",
" 'access',\n",
" 'dapp',\n",
" 'backend',\n",
" 'protocol',\n",
" 'stack',\n",
" 'trustless',\n",
" 'metamask',\n",
" 'augur',\n",
" 'pantera_capital',\n",
" 'bounty',\n",
" 'bounties_network',\n",
" 'infura',\n",
" 'ethereum',\n",
" 'ipfs',\n",
" 'geth',\n",
" 'evm',\n",
" 'aion',\n",
" 'shyft',\n",
" 'web3',\n",
" 'merkle_tree',\n",
" 'audit',\n",
" 'zeppelin',\n",
" 'ares',\n",
" 'governx',\n",
" 'on-chain',\n",
" 'off-chain',\n",
" 'ico',\n",
" 'developer',\n",
" 'pm',\n",
" 'community',\n",
" 'content',\n",
" 'course',\n",
" 'resource',\n",
" 'mentor',\n",
" 'blockchain',\n",
" 'context',\n",
" 'history',\n",
" 'mindset',\n",
" 'ganache',\n",
" 'remix',\n",
" 'react',\n",
" 'react_native',\n",
" 'oraclize',\n",
" 'lll',\n",
" 'vyper',\n",
" 'eip',\n",
" 'ethereum_improvement_proposal',\n",
" 'security',\n",
" 'cryptokitties',\n",
" 'sharding',\n",
" 'dapphub',\n",
" 'compiler',\n",
" 'formal_verification',\n",
" 'formal_proof',\n",
" 'safe',\n",
" 'engineer',\n",
" 'tooling',\n",
" 'erc20',\n",
" 'fungible',\n",
" 'nft_token',\n",
" 'ipns',\n",
" 'auction',\n",
" 'ethalarm',\n",
" 'browser',\n",
" 'crypto',\n",
" 'cryptographic',\n",
" 'independent',\n",
" 'verifier',\n",
" 'investor',\n",
" 'decentraland',\n",
" 'open',\n",
" 'dharma',\n",
" 'library',\n",
" 'wrapper',\n",
" 'mist',\n",
" 'open-source',\n",
" 'colony',\n",
" 'status_open_bounties',\n",
" 'gitcoin',\n",
" 'status',\n",
" 'ens',\n",
" 'ui',\n",
" 'static_analysis',\n",
" 'documentation',\n",
" 'ethmoji',\n",
" 'openzeppelin',\n",
" 'ethwaterloo',\n",
" 'ethdenver',\n",
" 'ethvigil',\n",
" 'rest',\n",
" 'integration',\n",
" 'email',\n",
" 'slack',\n",
" 'vm',\n",
" 'design',\n",
" 'testrpc',\n",
" 'trezor',\n",
" 'rpc',\n",
" 'ewasm',\n",
" 'research',\n",
" 'plasma',\n",
" 'snarks',\n",
" 'starks',\n",
" 'zksnarks',\n",
" 'zkstarks',\n",
" 'truebit',\n",
" 'ethereum_wallet',\n",
" 'web3.js',\n",
" 'ERC725',\n",
" 'network',\n",
" 'p2p',\n",
" 'analysis',\n",
" 'hack',\n",
" 'regulatory',\n",
" 'giveth',\n",
" 'pledge',\n",
" 'chat',\n",
" 'discovery',\n",
" 'liquid',\n",
" 'dappnode',\n",
" 'makerdao',\n",
" 'identity',\n",
" 'gnosis',\n",
" 'ddex',\n",
" 'wallet',\n",
" 'hellogold',\n",
" 'horizon_blockchain',\n",
" 'games',\n",
" 'fair',\n",
" 'cross-chain',\n",
" 'finance',\n",
" 'swap',\n",
" 'contract',\n",
" 'solidify',\n",
" 'knowledge',\n",
" 'kauri',\n",
" 'tutorial',\n",
" 'dispute_resolution',\n",
" 'arbitration',\n",
" 'dao',\n",
" 'incentive',\n",
" 'decision',\n",
" 'production',\n",
" 'payment',\n",
" 'micro_payment',\n",
" 'ethereumjs',\n",
" 'kyokan',\n",
" 'counterfactual',\n",
" 'state_channel',\n",
" 'ethglobal',\n",
" 'database',\n",
" 'leroy',\n",
" 'steemit',\n",
" 'video',\n",
" 'infrastructure',\n",
" 'ethdeploy',\n",
" 'cryptozombies',\n",
" 'ethfiddle',\n",
" 'digital_asset',\n",
" 'crowdsale',\n",
" 'modular.network',\n",
" 'ethpm',\n",
" 'eal',\n",
" 'ethereum_address_lookup',\n",
" 'chrome extension',\n",
" 'phishing',\n",
" 'bot',\n",
" 'myetherwallet',\n",
" 'mew',\n",
" 'mycrypto',\n",
" 'bridge',\n",
" 'layer_2',\n",
" 'sidechain',\n",
" 'ethereum_permission_client',\n",
" 'wasm',\n",
" 'kovan',\n",
" 'trading',\n",
" 'token_contract',\n",
" 'consensus',\n",
" 'algorithm',\n",
" 'contract',\n",
" 'polymath',\n",
" 'ethereum_alarm_clock',\n",
" 'dagger',\n",
" 'multisig',\n",
" 'polychain',\n",
" 'trinity',\n",
" 'py-evm',\n",
" 'web3.py',\n",
" 'usability',\n",
" 'quickblocks',\n",
" 'embark',\n",
" 'samsara',\n",
" 'raffle',\n",
" 'escrow',\n",
" 'auction',\n",
" 'collateral',\n",
" 'portfolio',\n",
" 'slockit',\n",
" 'iot',\n",
" 'sourccred',\n",
" 'filecoin',\n",
" 'spankchain',\n",
" 'spank',\n",
" 'adtoken',\n",
" 'dao',\n",
" 'betting',\n",
" 'zocrates',\n",
" 'sweetbridge',\n",
" 'the_graph',\n",
" 'json_rpc',\n",
" 'jsonrpc',\n",
" 'graphql',\n",
" 'voting_system',\n",
" 'trustory',\n",
" 'tokenomics',\n",
" 'cryptoeconomic',\n",
" 'coinbase',\n",
" 'ujo_music',\n",
" 'virtuepoker',\n",
" 'monax',\n",
" 'maker',\n",
" 'vulcanizedb',\n",
" 'etl',\n",
" 'sql',\n",
" 'tendermint',\n",
" 'lightning'\n",
" 'federated_exchange',\n",
" 'week_in_ethereum',\n",
" 'week_ethereum'\n",
" 'newsletter',\n",
" 'r/ethereum',\n",
" 'moderator',\n",
" 'ERC721',\n",
" 'xlnt',\n",
" 'gnarly',\n",
" 'redis',\n",
" 'eip0',\n",
" 'ethereum magicians',\n",
" 'coworking',\n",
" 'crypto_nyc',\n",
" 'odin',\n",
" 'identity',\n",
" 'uport',\n",
" # What are the tools/libaries/framework you use\n",
" 'typedoc',\n",
" 'web3js',\n",
" 'test-rpc',\n",
" 'eth.js',\n",
" 'solc',\n",
" 'minimetoken',\n",
" 'visual_studio_code',\n",
" 'docker',\n",
" 'travis',\n",
" 'github',\n",
" 'rinkeby',\n",
" 'redux',\n",
" 'ethereumjs-blockstream',\n",
" 'keythereum',\n",
" 'sublime',\n",
" 'emacs',\n",
" 'vim',\n",
" 'bignumber',\n",
" 'blockies',\n",
" 'mm',\n",
" 'mythril',\n",
" 'mithril',\n",
" 'jetbrains',\n",
" 'jquery',\n",
" 'evmlab',\n",
" 'solhint',\n",
" 'ethgasreporter',\n",
" 'mocha',\n",
" 'oyente',\n",
" 'manticore',\n",
" 'rattle',\n",
" 'antlr',\n",
" 'vs_code',\n",
" 'typescript',\n",
" 'nodejs',\n",
" 'etherscan',\n",
" 'web3py',\n",
" 'django',\n",
" 'bootstrap',\n",
" 'evm_lab',\n",
" 'ethers.js',\n",
" 'google_cloud',\n",
" 'eth.js',\n",
" 'intellij',\n",
" 'spank',\n",
" 'zeroclient',\n",
" 'postgresql',\n",
" 'ethers.cli',\n",
" 'ethers.build',\n",
" 'swarm',\n",
" 'eth-keyring-controller',\n",
" 'ethjs-utils',\n",
" 'openostbase',\n",
" 'parityjs',\n",
" 'jupiter_notebook',\n",
" 'jupyter',\n",
" '0x.js'\n",
" 'kubernetes',\n",
" 'github',\n",
" 'webpack',\n",
" 'brave',\n",
" 'libp2p',\n",
" 'devp2p',\n",
" 'atom',\n",
" 'apm',\n",
" 'aragon_pakage_manager',\n",
" 'pprof',\n",
" 'wyvern',\n",
" 'bignum',\n",
" 'numeral',\n",
" 'chai',\n",
" 'solcoverage',\n",
" # How do you handle testing?\n",
" 'surya',\n",
" # How do you handle smart contract verification and security?\n",
" 'professional',\n",
" 'argus',\n",
" 'ci',\n",
" 'human_thinking',\n",
" 'linting_rule',\n",
" 'linting',\n",
" 'linter',\n",
" 're-entrancy',\n",
" 'reentrancy',\n",
" 'vulnerability',\n",
" 'community_auditing',\n",
" 'bounty_program',\n",
" 'invariant',\n",
" 'unit_test',\n",
" 'unit_testing',\n",
" 'code_review',\n",
" 'quantstamp',\n",
" 'crappy_process',\n",
" 'spec',\n",
" 'edge_case',\n",
" 'corner_case',\n",
" 'intentional_break',\n",
" 'crowdfunding',\n",
" 'defensive_code',\n",
" 'risk',\n",
" 'mistake',\n",
" 'isolate',\n",
" 'don_hold_eth',\n",
" 'escape_hatch',\n",
" 'library',\n",
" 'compiler',\n",
" 'tester',\n",
" 'tooling',\n",
" 'error',\n",
" 'concept',\n",
" 'economics',\n",
" 'funcitonal_test',\n",
" 'fuzzing',\n",
" 'ethers.build',\n",
" 'yuet',\n",
" 'tdd',\n",
" 'internal_audit',\n",
" 'checklist',\n",
" 'integration_test',\n",
" 'consensys_best_practices',\n",
" 'subreddit',\n",
" 'external_audit',\n",
" 'bug_bounty',\n",
" 'security_analysis',\n",
" 'overflow',\n",
" 'assumption',\n",
" # Other bounties?\n",
" 'state_watching',\n",
" 'nft',\n",
" 'openssl',\n",
" 'orderwatcher',\n",
" 'consensus-building',\n",
" 'vocal',\n",
" 'good_idea',\n",
" 'wrong_abstraction',\n",
" 'tokenized_equity',\n",
" 'neufund',\n",
" 'eurotoken',\n",
" 'C++_dev',\n",
" 'payment',\n",
" 'desktop_wallet',\n",
" 'web_page',\n",
" 'open-source_explorer',\n",
" 'decentralized',\n",
" 'erc223',\n",
" 'watcher',\n",
" 'solidity_debugger',\n",
" 'trusted_relay_chain',\n",
" 'side_chain',\n",
" 'sidechain',\n",
" 'deposit',\n",
" 'lock',\n",
" 'escrow',\n",
" 'talented_people',\n",
" 'web_developer',\n",
" 'software_engineer',\n",
" 'recruiting',\n",
" 'gas_profiling',\n",
" 'gas_cost_estimation',\n",
" 'stack',\n",
" 'limit',\n",
" 'slot',\n",
" 'iulia',\n",
" 'technical_writer',\n",
" 'improve_documentation',\n",
" 'good_ide',\n",
" 'omkara',\n",
" 'smart_contract_security',\n",
" 'solidity_contract',\n",
" 'incentive_structure',\n",
" 'reviewer',\n",
" 'maintainer',\n",
" 'bug-bounty',\n",
" 'dev_grant',\n",
" 'ethprize',\n",
" 'scaffolding_tool',\n",
" 'block_explorer',\n",
" 'scaling',\n",
" 'proof-of-authority',\n",
" 'security_team',\n",
" 'hire_people',\n",
" 'hiring_people', # should be catched by lemmatizer\n",
" 'full_time',\n",
" 'ethereum_query_language',\n",
" 'websocket',\n",
" 'deploy',\n",
" 'heroku',\n",
" 'deployment_tool',\n",
" 'manipulate_strings',\n",
" 'educate_people',\n",
" 'stay_safe',\n",
" 'tutorial',\n",
" 'write-up',\n",
" 'how_things_work',\n",
" 'resource',\n",
" 'phishing',\n",
" 'airdrop',\n",
" 'private_key',\n",
" 'onboard',\n",
" 'video',\n",
" 'infographic',\n",
" 'computational_analysis',\n",
" 'cost',\n",
" 'wasm',\n",
" 'black-box_test',\n",
" 'ide',\n",
" 'dependency',\n",
" 'code_coverage',\n",
" 'etherscan_verification',\n",
" 'tracing_api',\n",
" 'common_format',\n",
" 'tracing_rpc_call',\n",
" 'quickblocks',\n",
" 'swarm_integration',\n",
" 'coverage_tool',\n",
" 'ledger_support',\n",
" 'unification',\n",
" 'testnet',\n",
" 'type',\n",
" 'safety',\n",
" 'compiled_language',\n",
" 'use-case',\n",
" 'explain',\n",
" 'data_model',\n",
" 'interactive_demo',\n",
" 'upgradeability',\n",
" 'gas_cost',\n",
" 'scheduler',\n",
" 'compiler',\n",
" 'token_curation_market',\n",
" # What tools dont exist at the moment?\n",
" 'prettier',\n",
" 'breakpoint',\n",
" 'log',\n",
" 'slack',\n",
" 'estimate_gas',\n",
" 'software_development',\n",
" 'issue',\n",
" 'test_suite',\n",
" 'better_querying',\n",
" 'query',\n",
" 'good_wiki',\n",
" 'stack_visualizer',\n",
" 'evmlab',\n",
" 'execute',\n",
" 'trace',\n",
" 'step_through',\n",
" 'parity_bridge',\n",
" 'interoperability',\n",
" 'standardization',\n",
" 'bridge',\n",
" 'data_analytics',\n",
" 'reconciliation',\n",
" 'analytics',\n",
" 'data_implicit',\n",
" 'decentralized_logging',\n",
" 'automated_updatable_smart_contract',\n",
" 'ethmix',\n",
" 'syntax_highlighting',\n",
" 'event',\n",
" 'lightweight_user_interface',\n",
" 'subscribe',\n",
" 'blockchain_state',\n",
" 'bamboo',\n",
" 'vyper',\n",
" 'serpent',\n",
" 'rollback_transaction',\n",
" 'roll_back_transaction',\n",
" 'versioning',\n",
" 'type_system',\n",
" 'simulation_tool',\n",
" 'open_source',\n",
" 'storage_platform',\n",
" 'solidity_interpreter',\n",
" 'fraud_detection',\n",
" 'proxy_account',\n",
" 'interactive_debugger',\n",
" 'stress-test',\n",
" 'cryptoeconomics',\n",
" 'game_theory',\n",
" 'drag_and_drop',\n",
" 'builder',\n",
" 'user_experience',\n",
" 'quick_validation'\n",
" }"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Proof of Concept"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:48.807988Z",
"start_time": "2018-07-18T16:29:48.802551Z"
}
},
"outputs": [],
"source": [
"stop_words = nlp.Defaults.stop_words\n",
"\n",
"def vocab_extraction(txts):\n",
" # Transform the serie into a list of list of words,\n",
" # Remove stopwords at the same time\n",
" cleaned = []\n",
" for idx, txt in txts.iteritems():\n",
" # Remove stopwords\n",
" cleaned += [[word for word in simple_preprocess(txt, deacc = True) if word not in stop_words]]\n",
" \n",
" # Build bigrams and trigrams\n",
" bigrams = Phraser(Phrases(cleaned, min_count=1, threshold=1))\n",
" trigrams = Phraser(Phrases(bigrams[cleaned], threshold=1))\n",
"\n",
" # Now create the bag of words with the new trigrams\n",
" cleaned = [trigrams[bigrams[txt]] for txt in cleaned]\n",
" \n",
" # Lemmatization - TODO improve\n",
" lemmatized = []\n",
" for txt in cleaned:\n",
" if txt == []:\n",
" lemmatized += set()\n",
" else:\n",
" doc = nlp(\" \".join(txt))\n",
" # token.lemma_ has a tendency to replace 'ethereumjs' by 'ethereumj'\n",
" lemmatized += [set(token.lemma_ for token in doc if (\n",
" token.lemma_ in eth_keywords or token.lower_ in eth_keywords\n",
" )\n",
" )]\n",
" \n",
" return lemmatized"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:50.304745Z",
"start_time": "2018-07-18T16:29:48.809025Z"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"[{'contract',\n",
" 'decentralized_exchange',\n",
" 'design',\n",
" 'event',\n",
" 'gas',\n",
" 'network',\n",
" 'orderwatcher',\n",
" 'protocol',\n",
" 'smart_contract',\n",
" 'transaction'},\n",
" {'blockchain', 'error', 'ethereum', 'intellij', 'truffle', 'usability'},\n",
" {'api',\n",
" 'client',\n",
" 'contract',\n",
" 'mew',\n",
" 'proof_stake',\n",
" 'protocol',\n",
" 'raiden',\n",
" 'signature',\n",
" 'smart_contract',\n",
" 'token'},\n",
" {'adchain',\n",
" 'consensy',\n",
" 'deploy',\n",
" 'design',\n",
" 'developer',\n",
" 'ethereum',\n",
" 'onboarding',\n",
" 'tcr',\n",
" 'token',\n",
" 'type'},\n",
" {'ambisafe',\n",
" 'blockchain',\n",
" 'bounty',\n",
" 'client',\n",
" 'contract',\n",
" 'deploy',\n",
" 'deployment',\n",
" 'devop',\n",
" 'gas',\n",
" 'issue',\n",
" 'javascript',\n",
" 'parity',\n",
" 'platform',\n",
" 'scalable',\n",
" 'smart_contract',\n",
" 'test',\n",
" 'token',\n",
" 'token_contract',\n",
" 'truffle',\n",
" 'tx'},\n",
" {'aragon',\n",
" 'aragon_o',\n",
" 'contract',\n",
" 'design',\n",
" 'ethereum',\n",
" 'network',\n",
" 'organization',\n",
" 'permission',\n",
" 'platform',\n",
" 'resource',\n",
" 'rinkeby',\n",
" 'ui'},\n",
" {'acl',\n",
" 'aragon',\n",
" 'backend',\n",
" 'contract',\n",
" 'dapp',\n",
" 'database',\n",
" 'decentralized',\n",
" 'developer',\n",
" 'event',\n",
" 'governance',\n",
" 'platform',\n",
" 'protocol',\n",
" 'stack',\n",
" 'tooling',\n",
" 'trustless',\n",
" 'tx'},\n",
" {'augur'},\n",
" {'bounty',\n",
" 'developer',\n",
" 'event',\n",
" 'infura',\n",
" 'ipfs',\n",
" 'network',\n",
" 'solidity',\n",
" 'transaction',\n",
" 'websocket'},\n",
" {'aion',\n",
" 'bridge',\n",
" 'client',\n",
" 'event',\n",
" 'evm',\n",
" 'parity_bridge',\n",
" 'shyft',\n",
" 'token'},\n",
" {'bridge',\n",
" 'client',\n",
" 'contract',\n",
" 'evm',\n",
" 'js',\n",
" 'parity_bridge',\n",
" 'pm',\n",
" 'smart_contract',\n",
" 'solidity',\n",
" 'stack',\n",
" 'type'},\n",
" {'consensy', 'security', 'token', 'zeppelin'},\n",
" {'are', 'dapp', 'governance', 'governx', 'ico', 'infrastructure', 'infura'},\n",
" {'blockchain',\n",
" 'consensy',\n",
" 'content',\n",
" 'context',\n",
" 'contract',\n",
" 'course',\n",
" 'design',\n",
" 'developer',\n",
" 'ethereum',\n",
" 'evm',\n",
" 'ganache',\n",
" 'integration',\n",
" 'ipfs',\n",
" 'lll',\n",
" 'mentor',\n",
" 'mindset',\n",
" 'pm',\n",
" 'react',\n",
" 'remix',\n",
" 'resource',\n",
" 'security',\n",
" 'truffle',\n",
" 'vyper'},\n",
" {'ethereum', 'evm', 'security', 'smart_contract'},\n",
" {'blockchain', 'cryptokittie', 'shard'},\n",
" {'api',\n",
" 'compiler',\n",
" 'contract',\n",
" 'dapphub',\n",
" 'ethereum',\n",
" 'evm',\n",
" 'safety',\n",
" 'solidity'},\n",
" {'auction',\n",
" 'audit',\n",
" 'blockchain',\n",
" 'browser',\n",
" 'community',\n",
" 'content',\n",
" 'contract',\n",
" 'cryptographic',\n",
" 'decentralized',\n",
" 'decentralized_exchange',\n",
" 'email',\n",
" 'engineer',\n",
" 'ethalarm',\n",
" 'event',\n",
" 'fungible',\n",
" 'independent',\n",
" 'ipfs',\n",
" 'ipns',\n",
" 'issue',\n",
" 'nft',\n",
" 'protocol',\n",
" 'smart_contract',\n",
" 'token',\n",
" 'tooling',\n",
" 'verifier'},\n",
" {'crypto', 'decentraland', 'ide', 'investor'},\n",
" {'contract', 'dharma', 'library', 'open', 'protocol'},\n",
" {'bounty',\n",
" 'browser',\n",
" 'colony',\n",
" 'developer',\n",
" 'ethereum',\n",
" 'gitcoin',\n",
" 'github',\n",
" 'integration',\n",
" 'mist',\n",
" 'open',\n",
" 'open_source',\n",
" 'status'},\n",
" {'documentation', 'ens', 'evm', 'smart_contract', 'static_analysis', 'ui'},\n",
" {'ethdenver',\n",
" 'ethereum',\n",
" 'ethmoji',\n",
" 'ethwaterloo',\n",
" 'nft',\n",
" 'openzeppelin',\n",
" 'smart_contract',\n",
" 'test'},\n",
" {'api',\n",
" 'blockchain',\n",
" 'contract',\n",
" 'deploy',\n",
" 'developer',\n",
" 'email',\n",
" 'ethvigil',\n",
" 'event',\n",
" 'hack',\n",
" 'ide',\n",
" 'integration',\n",
" 'private_key',\n",
" 'remix',\n",
" 'rest',\n",
" 'rpc',\n",
" 'slack',\n",
" 'testnet',\n",
" 'token',\n",
" 'transaction',\n",
" 'web_developer'},\n",
" {'contract',\n",
" 'dapp',\n",
" 'design',\n",
" 'evm',\n",
" 'ewasm',\n",
" 'issue',\n",
" 'javascript',\n",
" 'rpc',\n",
" 'solidity',\n",
" 'testrpc',\n",
" 'trezor',\n",
" 'vm'},\n",
" {'design',\n",
" 'formal_verification',\n",
" 'plasma',\n",
" 'research',\n",
" 'sharding',\n",
" 'snark',\n",
" 'solidity',\n",
" 'stark',\n",
" 'truebit'},\n",
" {'api',\n",
" 'blockchain',\n",
" 'browser',\n",
" 'design',\n",
" 'developer',\n",
" 'ethereum',\n",
" 'identity',\n",
" 'mist',\n",
" 'rpc',\n",
" 'wallet'},\n",
" {'contract', 'js'},\n",
" {'analysis',\n",
" 'api',\n",
" 'bounty',\n",
" 'browser',\n",
" 'client',\n",
" 'consensus',\n",
" 'cost',\n",
" 'deposit',\n",
" 'developer',\n",
" 'docker',\n",
" 'documentation',\n",
" 'ethereum',\n",
" 'evm',\n",
" 'evm_lab',\n",
" 'execute',\n",
" 'fuzzing',\n",
" 'gas',\n",
" 'geth',\n",
" 'hack',\n",
" 'issue',\n",
" 'js',\n",
" 'metamask',\n",
" 'network',\n",
" 'parity',\n",
" 'professional',\n",
" 'protocol',\n",
" 'query',\n",
" 'react',\n",
" 'security',\n",
" 'stack',\n",
" 'test',\n",
" 'tooling',\n",
" 'trace',\n",
" 'transaction',\n",
" 'tx',\n",
" 'ui',\n",
" 'vm'},\n",
" {'bounty',\n",
" 'consensy',\n",
" 'developer',\n",
" 'ethprize',\n",
" 'gitcoin',\n",
" 'open_source',\n",
" 'platform',\n",
" 'recruit',\n",
" 'regulatory'},\n",
" {'gas', 'giveth', 'ipfs', 'limit', 'platform', 'transaction'},\n",
" {'blockchain', 'bounty', 'chat', 'discovery', 'email', 'pledge', 'ui'},\n",
" {'aragon',\n",
" 'blockchain',\n",
" 'contract',\n",
" 'dao',\n",
" 'dappnode',\n",
" 'gas_cost',\n",
" 'giveth',\n",
" 'ico',\n",
" 'identity',\n",
" 'liquid',\n",
" 'makerdao',\n",
" 'smart_contract',\n",
" 'status',\n",
" 'trustless'},\n",
" {'consensus',\n",
" 'contract',\n",
" 'ddex',\n",
" 'decentralized',\n",
" 'deploy',\n",
" 'escrow',\n",
" 'ethereum',\n",
" 'ethpm',\n",
" 'gnosis',\n",
" 'infrastructure',\n",
" 'maker',\n",
" 'network',\n",
" 'payment',\n",
" 'platform',\n",
" 'smart_contract',\n",
" 'test',\n",
" 'token',\n",
" 'wallet'},\n",
" set(),\n",
" {'documentation', 'solidity', 'truffle'},\n",
" {'blockchain', 'contract', 'hellogold', 'token'},\n",
" {'blockchain', 'cost', 'decentralized', 'fair', 'game', 'scalable'},\n",
" {'contract', 'swap'},\n",
" {'aragon',\n",
" 'audit',\n",
" 'developer',\n",
" 'openzeppelin',\n",
" 'smart_contract',\n",
" 'solidify'},\n",
" {'bounty',\n",
" 'decentralized',\n",
" 'ethereum',\n",
" 'github',\n",
" 'ipfs',\n",
" 'kauri',\n",
" 'knowledge',\n",
" 'maker',\n",
" 'token',\n",
" 'tutorial'},\n",
" {'arbitration', 'dao', 'decision', 'incentive', 'smart_contract'},\n",
" {'client',\n",
" 'crypto',\n",
" 'ethereumj',\n",
" 'library',\n",
" 'metamask',\n",
" 'payment',\n",
" 'pm',\n",
" 'scale',\n",
" 'smart_contract',\n",
" 'state_channel',\n",
" 'ui',\n",
" 'wallet'},\n",
" {'client', 'ethereum', 'plasma', 'solidity', 'spankchain', 'wallet'},\n",
" set(),\n",
" {'counterfactual',\n",
" 'dapp',\n",
" 'ethglobal',\n",
" 'event',\n",
" 'evm',\n",
" 'protocol',\n",
" 'state_channel'},\n",
" {'blockchain',\n",
" 'contract',\n",
" 'database',\n",
" 'ethereum',\n",
" 'event',\n",
" 'leroy',\n",
" 'remix',\n",
" 'smart_contract',\n",
" 'solidity'},\n",
" {'client',\n",
" 'contract',\n",
" 'evm',\n",
" 'geth',\n",
" 'smart_contract',\n",
" 'test',\n",
" 'testrpc',\n",
" 'truffle',\n",
" 'video'},\n",
" {'crypto',\n",
" 'decentralized',\n",
" 'ethereum',\n",
" 'infrastructure',\n",
" 'payment',\n",
" 'protocol',\n",
" 'steemit',\n",
" 'transaction',\n",
" 'video'},\n",
" {'blockchain',\n",
" 'crypto',\n",
" 'cryptozombie',\n",
" 'developer',\n",
" 'ethdeploy',\n",
" 'ethereum',\n",
" 'ethfiddle',\n",
" 'evm',\n",
" 'ide',\n",
" 'issue',\n",
" 'platform',\n",
" 'remix',\n",
" 'solidity',\n",
" 'ui'},\n",
" {'client',\n",
" 'decentralized_exchange',\n",
" 'deploy',\n",
" 'ganache',\n",
" 'geth',\n",
" 'signature',\n",
" 'smart_contract',\n",
" 'test',\n",
" 'testnet',\n",
" 'testrpc',\n",
" 'truffle'},\n",
" {'decentralized', 'protocol', 'smart_contract'},\n",
" {'analysis',\n",
" 'api',\n",
" 'contract',\n",
" 'error',\n",
" 'ethereum',\n",
" 'gas',\n",
" 'js',\n",
" 'json_rpc',\n",
" 'kyokan',\n",
" 'metamask',\n",
" 'private_key',\n",
" 'tooling',\n",
" 'trace',\n",
" 'tx',\n",
" 'ui',\n",
" 'wallet'},\n",
" {'contract', 'platform', 'tutorial'},\n",
" {'blockchain',\n",
" 'bridge',\n",
" 'contract',\n",
" 'crowdsale',\n",
" 'deploy',\n",
" 'documentation',\n",
" 'ethpm',\n",
" 'finance',\n",
" 'library',\n",
" 'network',\n",
" 'open_source',\n",
" 'stack',\n",
" 'status',\n",
" 'test',\n",
" 'token',\n",
" 'upgradeability',\n",
" 'vm',\n",
" 'zeppelin'},\n",
" {'bot',\n",
" 'deploy',\n",
" 'eal',\n",
" 'ethereum',\n",
" 'metamask',\n",
" 'mycrypto',\n",
" 'myetherwallet',\n",
" 'phish',\n",
" 'transaction'},\n",
" {'crypto', 'ethereum', 'mew', 'security'},\n",
" {'blockchain',\n",
" 'contract',\n",
" 'dapp',\n",
" 'ipfs',\n",
" 'javascript',\n",
" 'js',\n",
" 'solidity',\n",
" 'stack',\n",
" 'token',\n",
" 'truffle',\n",
" 'tutorial'},\n",
" {'blockchain',\n",
" 'bridge',\n",
" 'client',\n",
" 'developer',\n",
" 'ethereum',\n",
" 'permission',\n",
" 'scale',\n",
" 'sidechain',\n",
" 'token',\n",
" 'tooling'},\n",
" {'dapp',\n",
" 'developer',\n",
" 'documentation',\n",
" 'js',\n",
" 'library',\n",
" 'linter',\n",
" 'parity',\n",
" 'react',\n",
" 'solidity'},\n",
" {'blockchain',\n",
" 'contract',\n",
" 'cost',\n",
" 'dapp',\n",
" 'ewasm',\n",
" 'fuzzing',\n",
" 'gas',\n",
" 'gas_cost',\n",
" 'kovan',\n",
" 'limit',\n",
" 'network',\n",
" 'parity',\n",
" 'spec',\n",
" 'stack',\n",
" 'test',\n",
" 'wasm'},\n",
" {'algorithm',\n",
" 'client',\n",
" 'consensus',\n",
" 'contract',\n",
" 'dapp',\n",
" 'deploy',\n",
" 'mist',\n",
" 'parity',\n",
" 'proof_stake',\n",
" 'solidity',\n",
" 'token_contract',\n",
" 'trading'},\n",
" {'blockchain',\n",
" 'cost',\n",
" 'crowdsale',\n",
" 'developer',\n",
" 'ethereum',\n",
" 'gas_cost',\n",
" 'polymath',\n",
" 'raiden',\n",
" 'signature',\n",
" 'smart_contract',\n",
" 'state_channel'},\n",
" {'backend', 'dagger', 'email', 'event', 'tx', 'ui'},\n",
" {'analytic', 'blockchain', 'engineer', 'payment', 'polychain'},\n",
" {'infura', 'metamask', 'smart_contract', 'token'},\n",
" {'backend', 'blockchain', 'contract', 'infura', 'metamask'},\n",
" {'bounty', 'developer', 'library', 'research', 'trinity'},\n",
" {'audit',\n",
" 'ethereum',\n",
" 'formal_verification',\n",
" 'governance',\n",
" 'library',\n",
" 'payment',\n",
" 'security',\n",
" 'smart_contract',\n",
" 'static_analysis',\n",
" 'usability'},\n",
" {'blockchain', 'contract', 'decentralized', 'ethereum', 'quickblock'},\n",
" {'analysis',\n",
" 'chat',\n",
" 'contract',\n",
" 'deploy',\n",
" 'developer',\n",
" 'embark',\n",
" 'mistake',\n",
" 'remix',\n",
" 'static_analysis'},\n",
" {'blockchain',\n",
" 'developer',\n",
" 'engineer',\n",
" 'protocol',\n",
" 'raffle',\n",
" 'samsara',\n",
" 'smart_contract'},\n",
" {'auction', 'concept', 'course', 'escrow', 'token'},\n",
" {'dapp',\n",
" 'javascript',\n",
" 'library',\n",
" 'protocol',\n",
" 'smart_contract',\n",
" 'test',\n",
" 'token'},\n",
" {'access',\n",
" 'audit',\n",
" 'blockchain',\n",
" 'client',\n",
" 'contract',\n",
" 'deploy',\n",
" 'iot',\n",
" 'kovan',\n",
" 'library',\n",
" 'network',\n",
" 'parity',\n",
" 'rinkeby',\n",
" 'slockit',\n",
" 'smart_contract',\n",
" 'test',\n",
" 'testnet',\n",
" 'type'},\n",
" {'consensy', 'developer', 'security', 'solidity'},\n",
" {'bounty',\n",
" 'ethereum',\n",
" 'fair',\n",
" 'filecoin',\n",
" 'github',\n",
" 'history',\n",
" 'identity',\n",
" 'infrastructure',\n",
" 'ipfs',\n",
" 'open_source',\n",
" 'sourccred',\n",
" 'token'},\n",
" {'auction', 'ico', 'smart_contract', 'spankchain', 'state_channel'},\n",
" {'adtoken',\n",
" 'concept',\n",
" 'ethereum',\n",
" 'event',\n",
" 'explain',\n",
" 'production',\n",
" 'research',\n",
" 'scale',\n",
" 'spank',\n",
" 'spankchain',\n",
" 'state_channel',\n",
" 'tcr',\n",
" 'tooling',\n",
" 'video'},\n",
" {'betting', 'ethereum'},\n",
" {'integration',\n",
" 'javascript',\n",
" 'oraclize',\n",
" 'smart_contract',\n",
" 'status',\n",
" 'truebit'},\n",
" {'developer', 'embark', 'ens', 'identity', 'smart_contract', 'status'},\n",
" {'consensy', 'sweetbridge'},\n",
" {'api',\n",
" 'blockchain',\n",
" 'community',\n",
" 'design',\n",
" 'ethereum',\n",
" 'graphql',\n",
" 'infrastructure',\n",
" 'issue',\n",
" 'json_rpc',\n",
" 'network',\n",
" 'protocol',\n",
" 'query',\n",
" 'research',\n",
" 'rest',\n",
" 'smart_contract',\n",
" 'ui'},\n",
" {'bridge',\n",
" 'ethereum',\n",
" 'protocol',\n",
" 'smart_contract',\n",
" 'solidity',\n",
" 'truebit',\n",
" 'tutorial'},\n",
" {'coinbase', 'cryptoeconomic', 'engineer', 'independent', 'trustory'},\n",
" {'ethereum', 'geth', 'library', 'smart_contract'},\n",
" {'decentralized', 'ethereum', 'network', 'platform', 'stack'},\n",
" {'consensus', 'smart_contract', 'virtuepoker'},\n",
" {'api',\n",
" 'backend',\n",
" 'cost',\n",
" 'gas_cost',\n",
" 'network',\n",
" 'plasma',\n",
" 'regulatory',\n",
" 'scale',\n",
" 'virtuepoker'},\n",
" {'blockchain',\n",
" 'bounty',\n",
" 'client',\n",
" 'content',\n",
" 'contract',\n",
" 'dapp',\n",
" 'database',\n",
" 'decentralized_exchange',\n",
" 'deploy',\n",
" 'engineer',\n",
" 'ethereum',\n",
" 'ethpm',\n",
" 'etl',\n",
" 'event',\n",
" 'github',\n",
" 'graphql',\n",
" 'ipfs',\n",
" 'maker',\n",
" 'monax',\n",
" 'network',\n",
" 'query',\n",
" 'sql',\n",
" 'tendermint',\n",
" 'testnet',\n",
" 'transaction',\n",
" 'tx',\n",
" 'vulcanizedb'},\n",
" {'consensy', 'developer', 'error', 'ethereum', 'moderator'},\n",
" {'dependency', 'error', 'ethereum', 'open_source', 'solidity'},\n",
" {'dex',\n",
" 'discovery',\n",
" 'ethereum',\n",
" 'execute',\n",
" 'nft',\n",
" 'protocol',\n",
" 'smart_contract',\n",
" 'token',\n",
" 'transaction',\n",
" 'wyvern'},\n",
" {'blockchain',\n",
" 'client',\n",
" 'contract',\n",
" 'gnarly',\n",
" 'network',\n",
" 'raffle',\n",
" 'solidity',\n",
" 'xlnt'},\n",
" {'ethereum', 'redis'},\n",
" {'blockchain',\n",
" 'community',\n",
" 'ethereum',\n",
" 'evm',\n",
" 'knowledge',\n",
" 'library',\n",
" 'platform',\n",
" 'scheduler',\n",
" 'security',\n",
" 'smart_contract',\n",
" 'stack',\n",
" 'tutorial',\n",
" 'vm',\n",
" 'zeppelin'},\n",
" {'contract',\n",
" 'library',\n",
" 'open',\n",
" 'open_source',\n",
" 'scheduler',\n",
" 'smart_contract',\n",
" 'zeppelin'},\n",
" {'dapp', 'open', 'protocol', 'smart_contract', 'token'},\n",
" {'blockchain',\n",
" 'community',\n",
" 'coworking',\n",
" 'crypto',\n",
" 'developer',\n",
" 'eip',\n",
" 'ethereum',\n",
" 'ewasm',\n",
" 'governance',\n",
" 'independent',\n",
" 'odin',\n",
" 'open',\n",
" 'protocol'},\n",
" {'community', 'decentralized', 'developer', 'ethereum', 'identity', 'uport'}]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vocab_extraction(df['who_what'])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:51.475298Z",
"start_time": "2018-07-18T16:29:50.305843Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[{'contract',\n",
" 'documentation',\n",
" 'ethereumj',\n",
" 'ethpm',\n",
" 'open_source',\n",
" 'smart_contract',\n",
" 'solidity',\n",
" 'truffle',\n",
" 'typedoc',\n",
" 'versioning'},\n",
" {'client', 'raiden'},\n",
" {'ganache', 'javascript', 'truffle'},\n",
" {'apm',\n",
" 'aragon',\n",
" 'contract',\n",
" 'dapphub',\n",
" 'deploy',\n",
" 'design',\n",
" 'ens',\n",
" 'error',\n",
" 'ethereum',\n",
" 'ethpm',\n",
" 'event',\n",
" 'evm',\n",
" 'ganache',\n",
" 'github',\n",
" 'ipfs',\n",
" 'issue',\n",
" 'javascript',\n",
" 'log',\n",
" 'minimetoken',\n",
" 'parity',\n",
" 'smart_contract',\n",
" 'solc',\n",
" 'solidity',\n",
" 'test',\n",
" 'tool',\n",
" 'tooling',\n",
" 'truffle',\n",
" 'ui',\n",
" 'websocket'},\n",
" {'augur',\n",
" 'ci',\n",
" 'contract',\n",
" 'dependency',\n",
" 'deploy',\n",
" 'docker',\n",
" 'error',\n",
" 'ethereumj',\n",
" 'geth',\n",
" 'github',\n",
" 'integration_test',\n",
" 'keythereum',\n",
" 'library',\n",
" 'parity',\n",
" 'rinkeby',\n",
" 'rpc',\n",
" 'test',\n",
" 'testrpc',\n",
" 'travis',\n",
" 'truffle',\n",
" 'typescript',\n",
" 'ui'},\n",
" {'augur',\n",
" 'contract',\n",
" 'emacs',\n",
" 'ide',\n",
" 'integration',\n",
" 'remix',\n",
" 'smart_contract',\n",
" 'stack',\n",
" 'static_analysis',\n",
" 'sublime',\n",
" 'syntax_highlighting',\n",
" 'test',\n",
" 'ui',\n",
" 'vim'},\n",
" {'bignumber',\n",
" 'blockie',\n",
" 'deployment',\n",
" 'ipfs',\n",
" 'library',\n",
" 'react',\n",
" 'remix',\n",
" 'testrpc'},\n",
" {'bot',\n",
" 'bounty',\n",
" 'client',\n",
" 'community',\n",
" 'decentralized',\n",
" 'ethereum',\n",
" 'event',\n",
" 'evm',\n",
" 'geth',\n",
" 'issue',\n",
" 'js',\n",
" 'metamask',\n",
" 'mm',\n",
" 'mythril',\n",
" 'network',\n",
" 'open',\n",
" 'open_source',\n",
" 'parity',\n",
" 'polymath',\n",
" 'smart_contract',\n",
" 'solidity',\n",
" 'stack',\n",
" 'test',\n",
" 'trace',\n",
" 'truffle',\n",
" 'wallet',\n",
" 'wasm'},\n",
" {'contract',\n",
" 'evmlab',\n",
" 'hack',\n",
" 'ide',\n",
" 'infrastructure',\n",
" 'jetbrain',\n",
" 'jquery',\n",
" 'log',\n",
" 'mithril',\n",
" 'remix'},\n",
" {'client',\n",
" 'embark',\n",
" 'ethgasreport',\n",
" 'formal_verification',\n",
" 'gas',\n",
" 'mocha',\n",
" 'solhint',\n",
" 'test',\n",
" 'tester',\n",
" 'zeppelin'},\n",
" {'api',\n",
" 'client',\n",
" 'compiler',\n",
" 'contract',\n",
" 'email',\n",
" 'ganache',\n",
" 'geth',\n",
" 'js',\n",
" 'library',\n",
" 'nodejs',\n",
" 'parity',\n",
" 'production',\n",
" 'rpc',\n",
" 'solc',\n",
" 'solidity',\n",
" 'test',\n",
" 'testrpc',\n",
" 'truffle',\n",
" 'vm',\n",
" 'wrapper'},\n",
" {'library', 'lll', 'metamask', 'remix'},\n",
" {'antlr',\n",
" 'audit',\n",
" 'error',\n",
" 'manticore',\n",
" 'mythril',\n",
" 'oyente',\n",
" 'query',\n",
" 'rattle',\n",
" 'solidity',\n",
" 'solidity_contract'},\n",
" {'deploy', 'smart_contract', 'truffle'},\n",
" {'decentralized',\n",
" 'deploy',\n",
" 'deployment',\n",
" 'ethereum',\n",
" 'integration',\n",
" 'ipfs',\n",
" 'issue',\n",
" 'js',\n",
" 'nodejs',\n",
" 'react',\n",
" 'stack',\n",
" 'test',\n",
" 'truffle',\n",
" 'typescript',\n",
" 'vs_code'},\n",
" {'test', 'truffle', 'typescript'},\n",
" {'etherscan', 'javascript', 'smart_contract'},\n",
" {'embark', 'mocha', 'openzeppelin', 'remix', 'solidity'},\n",
" {'truffle'},\n",
" {'api',\n",
" 'client',\n",
" 'ethereum',\n",
" 'history',\n",
" 'identity',\n",
" 'security',\n",
" 'subscribe',\n",
" 'transaction'},\n",
" {'metamask', 'myetherwallet', 'remix'},\n",
" {'bootstrap',\n",
" 'deployment',\n",
" 'django',\n",
" 'gitcoin',\n",
" 'infura',\n",
" 'metamask',\n",
" 'platform',\n",
" 'smart_contract',\n",
" 'truffle',\n",
" 'versioning'},\n",
" {'contract', 'deploy', 'evm', 'remix', 'transaction'},\n",
" {'etherscan', 'metamask', 'react', 'remix', 'smart_contract', 'truffle'},\n",
" {'infrastructure', 'js', 'parity', 'truffle', 'trustless'},\n",
" {'api',\n",
" 'blockchain',\n",
" 'client',\n",
" 'contract',\n",
" 'dependency',\n",
" 'deployment',\n",
" 'design',\n",
" 'developer',\n",
" 'ganache',\n",
" 'geth',\n",
" 'ico',\n",
" 'infrastructure',\n",
" 'knowledge',\n",
" 'metamask',\n",
" 'open_source',\n",
" 'state_channel',\n",
" 'testrpc',\n",
" 'token',\n",
" 'truffle',\n",
" 'typescript'},\n",
" {'contract', 'event', 'library', 'solidity'},\n",
" {'embark', 'geth', 'infura', 'remix', 'solidity', 'truffle'},\n",
" {'react'},\n",
" {'api',\n",
" 'atom',\n",
" 'contract',\n",
" 'developer',\n",
" 'engineer',\n",
" 'gas',\n",
" 'issue',\n",
" 'library',\n",
" 'redux',\n",
" 'remix',\n",
" 'smart_contract',\n",
" 'solc',\n",
" 'solidity',\n",
" 'test',\n",
" 'truffle'},\n",
" {'analytic',\n",
" 'api',\n",
" 'audit',\n",
" 'backend',\n",
" 'blockchain',\n",
" 'browser',\n",
" 'contract',\n",
" 'dapp',\n",
" 'dependency',\n",
" 'design',\n",
" 'docker',\n",
" 'ethereum',\n",
" 'event',\n",
" 'gas',\n",
" 'gas_cost',\n",
" 'geth',\n",
" 'ide',\n",
" 'infura',\n",
" 'integration_test',\n",
" 'javascript',\n",
" 'json_rpc',\n",
" 'library',\n",
" 'limit',\n",
" 'log',\n",
" 'metamask',\n",
" 'open',\n",
" 'plasma',\n",
" 'query',\n",
" 'smart_contract',\n",
" 'solidity',\n",
" 'spank',\n",
" 'syntax_highlight',\n",
" 'test',\n",
" 'testnet',\n",
" 'transaction',\n",
" 'truffle',\n",
" 'type',\n",
" 'typescript',\n",
" 'ui',\n",
" 'wallet',\n",
" 'zeroclient'},\n",
" {'etherscan', 'truffle', 'vim'},\n",
" {'browser',\n",
" 'client',\n",
" 'contract',\n",
" 'deploy',\n",
" 'error',\n",
" 'ganache',\n",
" 'heroku',\n",
" 'js',\n",
" 'library',\n",
" 'log',\n",
" 'network',\n",
" 'parity',\n",
" 'safe',\n",
" 'solidity',\n",
" 'state_channel',\n",
" 'test',\n",
" 'testnet',\n",
" 'truffle',\n",
" 'typescript',\n",
" 'wasm'},\n",
" {'parity'},\n",
" {'backend', 'contract', 'deploy', 'infura', 'metamask', 'remix', 'truffle'},\n",
" {'decentralized',\n",
" 'ethereum',\n",
" 'geth',\n",
" 'network',\n",
" 'protocol',\n",
" 'security',\n",
" 'solidity',\n",
" 'swarm',\n",
" 'truebit',\n",
" 'video'},\n",
" {'blockchain',\n",
" 'browser',\n",
" 'contract',\n",
" 'dapp',\n",
" 'dapphub',\n",
" 'deploy',\n",
" 'error',\n",
" 'ganache',\n",
" 'geth',\n",
" 'js',\n",
" 'json_rpc',\n",
" 'library',\n",
" 'metamask',\n",
" 'parity',\n",
" 'smart_contract',\n",
" 'stack',\n",
" 'truffle',\n",
" 'wallet'},\n",
" {'api',\n",
" 'javascript',\n",
" 'json_rpc',\n",
" 'mocha',\n",
" 'query',\n",
" 'react',\n",
" 'rpc',\n",
" 'smart_contract',\n",
" 'testrpc',\n",
" 'ui'},\n",
" {'ci',\n",
" 'community',\n",
" 'context',\n",
" 'deployment',\n",
" 'error',\n",
" 'ethereum',\n",
" 'ethereumj',\n",
" 'execute',\n",
" 'integration',\n",
" 'js',\n",
" 'library',\n",
" 'mistake',\n",
" 'multisig',\n",
" 'security',\n",
" 'solidity',\n",
" 'test',\n",
" 'testrpc',\n",
" 'tx',\n",
" 'wallet',\n",
" 'zeppelin'},\n",
" {'analytic', 'blockchain', 'dapp', 'js', 'solidity'},\n",
" {'access',\n",
" 'audit',\n",
" 'community',\n",
" 'compiler',\n",
" 'contract',\n",
" 'cryptozombie',\n",
" 'deploy',\n",
" 'deployment',\n",
" 'documentation',\n",
" 'ethereum',\n",
" 'ethpm',\n",
" 'ganache',\n",
" 'gas',\n",
" 'geth',\n",
" 'ide',\n",
" 'network',\n",
" 'openostbase',\n",
" 'parity',\n",
" 'production',\n",
" 'protocol',\n",
" 'remix',\n",
" 'security',\n",
" 'smart_contract',\n",
" 'solidity',\n",
" 'swarm',\n",
" 'test',\n",
" 'tooling',\n",
" 'tutorial',\n",
" 'type',\n",
" 'wallet',\n",
" 'wasm',\n",
" 'websocket',\n",
" 'wrapper',\n",
" 'zeppelin'},\n",
" {'contract',\n",
" 'deploy',\n",
" 'deployment',\n",
" 'ethereum',\n",
" 'integration',\n",
" 'ipfs',\n",
" 'javascript',\n",
" 'parity',\n",
" 'parityjs',\n",
" 'react',\n",
" 'smart_contract',\n",
" 'spec'},\n",
" {'crypto', 'vim'},\n",
" {'chai',\n",
" 'js',\n",
" 'mocha',\n",
" 'remix',\n",
" 'resource',\n",
" 'test',\n",
" 'testrpc',\n",
" 'type',\n",
" 'typescript'},\n",
" set(),\n",
" {'etherscan', 'infura', 'js'},\n",
" {'ethereum', 'etherscan', 'infura', 'react', 'redux', 'testrpc', 'truffle'},\n",
" {'api',\n",
" 'blockchain',\n",
" 'bounty',\n",
" 'contract',\n",
" 'developer',\n",
" 'documentation',\n",
" 'error',\n",
" 'github',\n",
" 'integration',\n",
" 'onboarding',\n",
" 'oyente',\n",
" 'remix',\n",
" 'static_analysis',\n",
" 'test',\n",
" 'transaction',\n",
" 'tutorial',\n",
" 'ui',\n",
" 'video'},\n",
" {'deploy',\n",
" 'evm',\n",
" 'infura',\n",
" 'issue',\n",
" 'library',\n",
" 'react',\n",
" 'remix',\n",
" 'smart_contract',\n",
" 'truffle',\n",
" 'upgradeability',\n",
" 'websocket',\n",
" 'zeppelin'},\n",
" {'geth', 'js', 'remix', 'solc'},\n",
" {'deploy',\n",
" 'infura',\n",
" 'javascript',\n",
" 'library',\n",
" 'protocol',\n",
" 'testnet',\n",
" 'type',\n",
" 'typescript',\n",
" 'ui',\n",
" 'wallet'},\n",
" {'browser',\n",
" 'ci',\n",
" 'client',\n",
" 'contract',\n",
" 'error',\n",
" 'ganache',\n",
" 'geth',\n",
" 'json_rpc',\n",
" 'library',\n",
" 'limit',\n",
" 'rpc',\n",
" 'smart_contract',\n",
" 'solidity_contract',\n",
" 'spec',\n",
" 'test',\n",
" 'travis',\n",
" 'truffle',\n",
" 'type',\n",
" 'typescript'},\n",
" {'ethereum',\n",
" 'formal_verification',\n",
" 'ganache',\n",
" 'ide',\n",
" 'mythril',\n",
" 'smart_contract'},\n",
" {'documentation', 'error', 'metamask', 'state_channel', 'vim'},\n",
" {'blockchain',\n",
" 'contract',\n",
" 'docker',\n",
" 'etherscan',\n",
" 'ganache',\n",
" 'metamask',\n",
" 'multisig',\n",
" 'open',\n",
" 'redux',\n",
" 'scale',\n",
" 'state_channel',\n",
" 'transaction',\n",
" 'wallet'},\n",
" {'ethereumjs', 'metamask', 'solc'},\n",
" {'backend', 'ganache', 'mist', 'parity', 'remix', 'vs_code'},\n",
" {'embark',\n",
" 'evm',\n",
" 'hack',\n",
" 'infrastructure',\n",
" 'js',\n",
" 'library',\n",
" 'react',\n",
" 'remix',\n",
" 'test',\n",
" 'vs_code',\n",
" 'webpack'},\n",
" {'brave',\n",
" 'bridge',\n",
" 'browser',\n",
" 'community',\n",
" 'dapp',\n",
" 'embark',\n",
" 'infura',\n",
" 'ipfs',\n",
" 'javascript',\n",
" 'metamask',\n",
" 'mist',\n",
" 'mycrypto',\n",
" 'parity',\n",
" 'platform'},\n",
" {'apm',\n",
" 'aragon',\n",
" 'atom',\n",
" 'blockchain',\n",
" 'contract',\n",
" 'etherscan',\n",
" 'ide',\n",
" 'ipfs',\n",
" 'remix',\n",
" 'upgradeability'},\n",
" {'client', 'js', 'library', 'safe', 'token', 'travis', 'truffle', 'vim'},\n",
" {'concept', 'engineer', 'infrastructure', 'open_source', 'stack', 'truffle'},\n",
" {'consensus',\n",
" 'ethereum',\n",
" 'sidechain',\n",
" 'smart_contract',\n",
" 'solidity',\n",
" 'tendermint',\n",
" 'trustory'},\n",
" {'geth', 'open', 'pprof', 'trace'},\n",
" {'atom',\n",
" 'community',\n",
" 'consensy',\n",
" 'contract',\n",
" 'deployment',\n",
" 'error',\n",
" 'ide',\n",
" 'library',\n",
" 'metamask',\n",
" 'network',\n",
" 'oraclize',\n",
" 'protocol',\n",
" 'smart_contract',\n",
" 'solidity',\n",
" 'test',\n",
" 'token',\n",
" 'truffle'},\n",
" {'deployment',\n",
" 'js',\n",
" 'library',\n",
" 'solidity',\n",
" 'truffle',\n",
" 'typescript',\n",
" 'ui',\n",
" 'wyvern'},\n",
" {'bignum', 'chai', 'etherscan', 'mocha', 'numeral', 'truffle'},\n",
" {'contract',\n",
" 'dapp',\n",
" 'deploy',\n",
" 'ethereumjs',\n",
" 'event',\n",
" 'gas',\n",
" 'issue',\n",
" 'library',\n",
" 'log',\n",
" 'metamask',\n",
" 'network',\n",
" 'remix',\n",
" 'smart_contract',\n",
" 'test',\n",
" 'transaction',\n",
" 'truffle',\n",
" 'zeppelin'},\n",
" {'error', 'ethpm', 'ipfs', 'resource'},\n",
" {'javascript', 'remix', 'smart_contract', 'solcoverage', 'test'},\n",
" {'evm', 'javascript', 'protocol', 'test', 'vim', 'wasm'},\n",
" {'cost',\n",
" 'ethereum',\n",
" 'ipfs',\n",
" 'react',\n",
" 'react_native',\n",
" 'redux',\n",
" 'spec',\n",
" 'test'}]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vocab_extraction(df['tooling'])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:52.144282Z",
"start_time": "2018-07-18T16:29:51.476537Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[{'augur',\n",
" 'contract',\n",
" 'ethereumjs',\n",
" 'governance',\n",
" 'integration',\n",
" 'issue',\n",
" 'neufund',\n",
" 'open',\n",
" 'security',\n",
" 'signature',\n",
" 'smart_contract',\n",
" 'testrpc',\n",
" 'token'},\n",
" {'truffle', 'unit_testing'},\n",
" {'github', 'security', 'smart_contract', 'test'},\n",
" {'audit', 'ci', 'compiler', 'contract', 'issue', 'security', 'solc'},\n",
" {'investor', 'js', 'stack', 'test', 'test_suite', 'truffle'},\n",
" {'deploy', 'rinkeby', 'testrpc', 'truffle'},\n",
" {'assumption',\n",
" 'bounty',\n",
" 'contract',\n",
" 'ethereum',\n",
" 'formal_verification',\n",
" 'js',\n",
" 'mythril',\n",
" 'solidity',\n",
" 'test',\n",
" 'test_suite',\n",
" 'truffle',\n",
" 'unit_test',\n",
" 'vm'},\n",
" {'library', 'travis', 'unit_test'},\n",
" {'resource'},\n",
" {'mythril', 'remix', 'surya'},\n",
" {'audit', 'community', 'contract'},\n",
" {'library', 'solidity', 'test'},\n",
" {'issue', 'js', 'react'},\n",
" {'geth', 'mocha', 'signature', 'test', 'testrpc'},\n",
" {'contract', 'deploy', 'event', 'gas', 'truffle'},\n",
" {'integration', 'test', 'unit_test'},\n",
" {'deploy', 'metamask', 'remix', 'truffle'},\n",
" {'gitcoin', 'test'},\n",
" {'ci',\n",
" 'contract',\n",
" 'deployment',\n",
" 'error',\n",
" 'etherscan',\n",
" 'gas',\n",
" 'issue',\n",
" 'js',\n",
" 'remix',\n",
" 'rest',\n",
" 'testrpc',\n",
" 'wrapper'},\n",
" {'ci',\n",
" 'code_coverage',\n",
" 'community',\n",
" 'cryptoeconomic',\n",
" 'dapp',\n",
" 'decision',\n",
" 'developer',\n",
" 'ethereum',\n",
" 'etherscan',\n",
" 'game_theory',\n",
" 'gas',\n",
" 'isolate',\n",
" 'issue',\n",
" 'multisig',\n",
" 'open',\n",
" 'rinkeby',\n",
" 'solidity',\n",
" 'test',\n",
" 'testnet',\n",
" 'token'},\n",
" {'evm', 'execute', 'remix', 'solidity', 'test'},\n",
" {'contract', 'unit_test'},\n",
" {'chai', 'ide', 'mocha', 'solidity', 'test', 'typescript'},\n",
" {'test'},\n",
" {'ico', 'test', 'transaction'},\n",
" set(),\n",
" set(),\n",
" {'contract', 'deploy', 'test', 'testrpc', 'ui'},\n",
" set(),\n",
" {'browser',\n",
" 'compiler',\n",
" 'contract',\n",
" 'deploy',\n",
" 'error',\n",
" 'ethfiddle',\n",
" 'ganache',\n",
" 'hack',\n",
" 'network',\n",
" 'open',\n",
" 'solidity',\n",
" 'truffle',\n",
" 'zeppelin'},\n",
" {'deployment', 'javascript', 'js', 'parity'},\n",
" {'rpc', 'test'},\n",
" {'blockchain',\n",
" 'contract',\n",
" 'error',\n",
" 'mocha',\n",
" 'mythril',\n",
" 'smart_contract',\n",
" 'solc',\n",
" 'solidity',\n",
" 'test',\n",
" 'vm'},\n",
" {'contract', 'ganache', 'geth', 'testrpc', 'truffle'},\n",
" {'test', 'testnet', 'truffle'},\n",
" {'contract', 'javascript', 'test'},\n",
" {'rpc', 'tooling'},\n",
" {'contract',\n",
" 'formal_verification',\n",
" 'fuzz',\n",
" 'fuzzing',\n",
" 'mythril',\n",
" 'test',\n",
" 'unit_test'},\n",
" {'audit', 'ci', 'contract', 'deploy', 'smart_contract'},\n",
" {'etherscan', 'smart_contract', 'test', 'ui'},\n",
" {'contract',\n",
" 'event',\n",
" 'javascript',\n",
" 'production',\n",
" 'testrpc',\n",
" 'truffle',\n",
" 'unit_test',\n",
" 'vm'},\n",
" {'contract', 'mocha', 'smart_contract', 'test', 'truffle'},\n",
" {'geth', 'ide', 'remix', 'test', 'test_suite', 'testnet', 'ui'},\n",
" {'error', 'library', 'safety', 'test', 'type', 'typescript'},\n",
" {'contract', 'invariant', 'manticore', 'mythril', 'unit_testing'},\n",
" {'auction',\n",
" 'blockchain',\n",
" 'course',\n",
" 'test',\n",
" 'testnet',\n",
" 'testrpc',\n",
" 'transaction',\n",
" 'truffle',\n",
" 'unit_testing'},\n",
" {'lock', 'payment', 'spankchain', 'test'},\n",
" {'test', 'truffle'},\n",
" {'ide', 'remix', 'smart_contract', 'test', 'unit_test'},\n",
" {'code_coverage',\n",
" 'contract',\n",
" 'embark',\n",
" 'execute',\n",
" 'solcoverage',\n",
" 'test',\n",
" 'unit_test'},\n",
" {'blockchain', 'javascript', 'test', 'tooling'},\n",
" {'contract',\n",
" 'deploy',\n",
" 'incentive',\n",
" 'issue',\n",
" 'smart_contract',\n",
" 'test',\n",
" 'testnet',\n",
" 'truffle',\n",
" 'unit_test'},\n",
" {'ethereum', 'js'},\n",
" {'client',\n",
" 'consensy',\n",
" 'context',\n",
" 'contract',\n",
" 'dao',\n",
" 'error',\n",
" 'evm',\n",
" 'hack',\n",
" 'infura',\n",
" 'knowledge',\n",
" 'mythril',\n",
" 'parity',\n",
" 'resource',\n",
" 'safe',\n",
" 'smart_contract',\n",
" 'solidity',\n",
" 'test',\n",
" 'trace',\n",
" 'truffle',\n",
" 'tx',\n",
" 'unit_test'},\n",
" {'auction',\n",
" 'code_coverage',\n",
" 'contract',\n",
" 'economic',\n",
" 'game_theory',\n",
" 'ico',\n",
" 'library',\n",
" 'parity',\n",
" 'solidity',\n",
" 'test',\n",
" 'token'},\n",
" {'client',\n",
" 'community',\n",
" 'consensus',\n",
" 'context',\n",
" 'dapphub',\n",
" 'ethereum',\n",
" 'explain',\n",
" 'fuzzing',\n",
" 'ico',\n",
" 'integration_test',\n",
" 'ipfs',\n",
" 'js',\n",
" 'monax',\n",
" 'network',\n",
" 'security',\n",
" 'solidity',\n",
" 'stack',\n",
" 'test',\n",
" 'token',\n",
" 'video',\n",
" 'zeppelin'},\n",
" {'analysis',\n",
" 'audit',\n",
" 'contract',\n",
" 'dao',\n",
" 'evm',\n",
" 'oyente',\n",
" 'security',\n",
" 'solcoverage',\n",
" 'solidity',\n",
" 'wyvern'},\n",
" {'ganache', 'integration_test', 'js', 'solidity', 'test'},\n",
" {'library', 'redis', 'smart_contract', 'test'},\n",
" {'ci', 'dapp', 'developer', 'integration', 'test', 'transaction', 'ui'},\n",
" {'bounty', 'chai', 'test'},\n",
" {'mocha'},\n",
" {'consensy', 'formal_verification', 'research', 'smart_contract', 'test'}]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vocab_extraction(df['testing'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Formatting for JSON"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:52.148256Z",
"start_time": "2018-07-18T16:29:52.145828Z"
}
},
"outputs": [],
"source": [
"def to_escaped_html(txt):\n",
" paragraphs = [f\"<p>{named_entities(line)}</p>\" for line in txt.splitlines()]\n",
" return ''.join(paragraphs)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:52.155343Z",
"start_time": "2018-07-18T16:29:52.149782Z"
}
},
"outputs": [],
"source": [
"def genTransformer(field, question):\n",
" def resultProc(df):\n",
" # Transform the serie into a list of list of words,\n",
" # Remove stopwords at the same time\n",
" cleaned = []\n",
" for idx, txt in df[field].iteritems():\n",
" # Remove stopwords\n",
" cleaned += [[word for word in simple_preprocess(txt, deacc = True) if word not in stop_words]]\n",
"\n",
" # Build bigrams and trigrams\n",
" bigrams = Phraser(Phrases(cleaned, min_count=1, threshold=1))\n",
" trigrams = Phraser(Phrases(bigrams[cleaned], threshold=1))\n",
"\n",
" # Now create the bag of words with the new trigrams\n",
" cleaned = [trigrams[bigrams[txt]] for txt in cleaned]\n",
"\n",
" # Lemmatization - TODO improve\n",
" for idx, txt in enumerate(cleaned):\n",
" if txt == []:\n",
" df[field][idx] = {\n",
" 'question': question,\n",
" 'answer': to_escaped_html(df[field][idx]),\n",
" 'keywords': set()\n",
" }\n",
" else:\n",
" doc = nlp(\" \".join(txt))\n",
" df[field][idx] = {\n",
" 'question': question,\n",
" 'answer': to_escaped_html(df[field][idx]),\n",
" 'keywords': set(token.lemma_ for token in doc if (\n",
" token.lemma_ in eth_keywords or token.lower_ in eth_keywords\n",
" ))\n",
" }\n",
" return resultProc"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:52.165550Z",
"start_time": "2018-07-18T16:29:52.156368Z"
}
},
"outputs": [],
"source": [
"testing_proc = genTransformer('testing', 'How do you handle testing?')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:52.822828Z",
"start_time": "2018-07-18T16:29:52.166617Z"
}
},
"outputs": [],
"source": [
"testing_proc(df)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:52.826550Z",
"start_time": "2018-07-18T16:29:52.823954Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'question': 'How do you handle testing?',\n",
" 'answer': '<p>Testrpc has gotten better &ndash;&ndash;</p><p>Increases the speed at which you can dev.</p><p>Blockstream is really cool. Written by Mica (from Augur?), under the EthereumJS lib.</p><p>Good dealing with block re-orgs and changes in state.</p><p>Continuous Integration:</p><p>Doesn&rsquo;t really work for smart contracts.</p><p>We just use testrpc.</p><p>Neufund was different than 0x:</p><p>Neufund was a trustee for tokens &ndash;&ndash; it was centralized by definition.</p><p>This made it simpler: I could create &ldquo;open-ended&rdquo; contracts &ndash;&ndash; a switch statement, that the default would send to another proxy contract.</p><p>But wouldn&rsquo;t be able to do this with 0x &ndash;&ndash; e.g. if we wanted to add Shnorr signatures &ndash;&ndash; because it&rsquo;s a governance / security issues.</p>',\n",
" 'keywords': {'augur',\n",
" 'contract',\n",
" 'ethereumjs',\n",
" 'governance',\n",
" 'integration',\n",
" 'issue',\n",
" 'neufund',\n",
" 'open',\n",
" 'security',\n",
" 'signature',\n",
" 'smart_contract',\n",
" 'testrpc',\n",
" 'token'}}"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['testing'][0]"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:52.831142Z",
"start_time": "2018-07-18T16:29:52.827576Z"
}
},
"outputs": [],
"source": [
"who_what_proc = genTransformer('who_what', 'Who are you and what are you working on?')\n",
"tooling_proc = genTransformer('tooling', 'What are the tools/libraries/frameworks you use?')\n",
"smart_contract_proc = genTransformer('smart_contract', 'How do you handle smart contract verif & security?')\n",
"other_bounties_proc = genTransformer('bounties', 'Other bounties?')\n",
"missing_tools_proc = genTransformer('missing_tools', 'What tools dont exist at the moment?')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:57.276852Z",
"start_time": "2018-07-18T16:29:52.832347Z"
}
},
"outputs": [],
"source": [
"who_what_proc(df)\n",
"tooling_proc(df)\n",
"smart_contract_proc(df)\n",
"other_bounties_proc(df)\n",
"missing_tools_proc(df)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:57.280613Z",
"start_time": "2018-07-18T16:29:57.277997Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'question': 'Who are you and what are you working on?',\n",
" 'answer': '<p>0x - Decentralized exchange protocol. It is a set of smart contracts that handle standard transactions in an order format.</p><p>The key advantage here is that these smart contracts leads to shared liquidity</p><p>We also achieve increased security and network liquidity through our architecture.</p><p>We launched the network in August 2017.</p><p>It works, but is V1. We are working on V2 which helps people build hybrid stations, supports new token standards, and makes the contract more gas efficient.</p><p>V1 only allows humans to create orders; V2 will allow new smart contract to create orders. This is HUGE.</p><p>Notes:</p><p>We&rsquo;re building the protocol; designing the standard; building dev tools for anyone to build a decentralized exchange.</p><p>Orders may become invalid for any reason:</p><p>Order being filled</p><p>Griefing attacks</p><p>We&rsquo;ve now built an OrderWatcher that keeps relayers updated on the state of orders.</p><p>We&rsquo;re using contract Events as a proxy for state changes.</p><p>Can do a diff between state trees and between block headers.</p><p>We also have a set of smart contracts to handle settlement;</p><p>Everyone who wants to trade is setting allowances on a smart contract.</p><p>We want upgradability.</p>',\n",
" 'keywords': {'contract',\n",
" 'decentralized_exchange',\n",
" 'design',\n",
" 'event',\n",
" 'gas',\n",
" 'network',\n",
" 'orderwatcher',\n",
" 'protocol',\n",
" 'smart_contract',\n",
" 'transaction'}}"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['who_what'][0]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"ExecuteTime": {
"end_time": "2018-07-18T16:29:57.289268Z",
"start_time": "2018-07-18T16:29:57.281841Z"
}
},
"outputs": [],
"source": [
"df[['name', 'who_what', 'tooling', 'testing', 'smart_contract', 'bounties', 'missing_tools']].to_json('interviews.json', orient = 'index')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
},
"toc": {
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": true,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}