TILE: Today I'm Learning Ethereum
Do you want to build useful Ethereum smart contracts and decentralized applications, but don't have much (or any) formal coding or programming experience? Me too. Fortunately, programmers tend to be willing to share their knowledge with the community and we can subsequently benefit from those contributions to make our journey more efficient and rewarding. So where (and when) do we start? I think the best method for understanding a technology and gaining proficiency in its use is to learn by doing. This TILE Project, which stands for "Today I'm Learning Ethereum", is my attempt to learn more about Ethereum smart contracts by building actual decentralized applications on the Ethereum platform. Along the way I'll gather and share useful guides, information, tips, tricks, and code for those of you who want to participate or follow-along. When does this start? Preferably yesterday, or months ago, but I'll settle for today.
Resources
[Lots to be filled in here. This is a work in progress]
Ethereum Basics
Background information that one should read.
-
Ethereum White Paper. Read the main article that clearly describes the scope and purpose of Ethereum. It's a bit technical, but not overly so. It think it's best to start at the original source, but it's too much too fast then the next couple of articles below provide a excellent overviews of Ethereum.
-
Economist: The great chain of being sure about things (Oct 31st 2015)
-
Articles by Vitalik Just read everythign V writes.
-
How does Ethereum Work?: Really good introduction to the technical components of Ethereum.
Websites
The Ethereum Wiki (unofficial): Good resource of information.
Ethereum Guides for Devs
Ethereum Stack Exchange Solidity: Read the Docs: For coding smart contracts and understanding the fundamentals of the Solidity language, read this guide.
Learning Solidity
-
Learn Solidity in Y minutes: Excellent resource, co-written by Joseph
-
Udemy; Learn Solidity: Costs money though.
-
Udemy: Ethereum Dapp. Costs money.
-
Gitter.im/ethereum/solidity: Get information from the source -- Solidity devs themselves.
Tokens and ICOs
Balaji S. Srinivasan' "Thoughts on Tokens":
Ether Wallets (some have solidity compiler integration)
- Mist -- Ethereum Wallet: Use this if you want to create an ether wallet and start using Ether, trade tokens, watch tokens, or watch contracts. It's build by the Ethereum Foundation, and is in a constant state of improvement and development.
- MyEtherWallet: An in-browser wallet generator
- Ethers.io: An in-browser wallet with a solidity code compiler; it's also adding support for applications (dApps)
- Metamask.io: A chrome extension ethereum wallet with a good user interface. Useful in conjunction with Browser Solidity to inject contracts into the blockchain.
IDEs (Integrated Development Environments) and Code Editors
This is a list of tools that you can use for writing Ethereum smart contracts.
Git -- Helpful guides for managing and posting your code
Learning to Code
General Coding Courses
- Harvard CS50: Awesome course; so many great lectures, quizzes, and reading material.
Videos: Learn how to program
- Derek Banas: Amazing set of programming tutorials.
- Derek Banas: Learn to Program: A great place to start. Learn how to code using Python.
JavaScript
- Eloquent Javascript: Highly regarded free ebook
Literature Resources
Books
- Age of Cryptocurrencies (Vigna and Casey, 2015).
- [Ethereum] Henning D.
- Bitcoin and Cryptocurrency Technologies Contains a free draft and video lectures.
- Mastering Bitcoin (Antonopoulos, 2015).
Must Read books on programming and design in general, according to Jeff Atwood (Stack Exchange)
- Code Complete (Steve McConnell)
- Don't Make me Think (Steve Krug)
- Peopleware
- The Pragmattic Programmer
- Facts and Fallacies of Software Engineering
Misc Coding Links and Info and Philosophies
- Computational Thinking
- Unix Philosophy and Introduction to Unix Philosophy. First rule: Make each program do one thing well. Rule2: Expect the output of every program to become the input to another.
Advice
Jeff Atwood(Creator of Stack Exchange), from ITworld article. See his Reddit AMA as well:
- Learn by Doing real projects. "Build stuff. In the process of building something, if you need a new tool, learn it then"
- Aim to be dumbest person in the room
- Have a coding buddy
Adding to that, we should include:
- Start as soon as you can. Start yesterday. This reminds of another good article on the important habit of just starting
- Don't Call yourself a programmer -- Kalzumeus
Blogs
- Ethereum Foundation Blog. Go here for news and information straight from the great Unicorn itself.
- Hacking Distributed. Excellent and informative blog of Emin Gün Sirer (Prof at Cornell).
- Hacker News
- media.consensys.net Information about Consensys' projects.
- Coindesk A long-running crypto information source; it often leans anti-Ethereum though.
STATE CHANNELS
Jeff Coleman's State Channel description Vitalik on State channels and Privacy. Good overview Universal State Channels (J. Tremback) Raiden.Network Bitcoin Micropayment Channels Bitcoin Lightning Network
Ethereum Meetup Groups
Ethereum Developers (Toronto) Seoul Ethereum Meetup
Misc
- Ethereum Yellow Paper. Not for the faint of heart.