I run geth on my cloud server to sync with the Ethereum Blockchain. I start geth whenever I code and it goes into a round of resynchronization with the Blockchain. This takes anything from minutes (that's if the last time I code is yesterday), or hours (if the last time I did this was months ago).
As of the time of writing, Ropsten (which I work on because ETHs are free here) is in block 1,911,915 and the main ethereum has reached block 4,399,227. If you do a complete sync, it will take you 2 to 3 days or more.
This is a continuation of the Going Dutch Smart Contract project that I started on 2nd Sep 2017. It has been a month, which is probably the equivalent of a year if you count in blockchain-time. Geth has gone from 1.6.7 to 1.7.2 and after upgrading my setup, I had to let it run overnight (in fast mode!) to sync my node to the block again.
My buddy, Mark and I have been hanging out on supper dates for the past 18 years. Sometimes he pays first and I forget to pay him back. The reverse happens at other times. We don't trust each other to maintain an Excel file to capture the records. I mean, look, what if Mark doctors the Excel file when I am not looking. This is obviously a great candidate for blockchain - now our records becomes immutable and the history of our misspending are forever etched in the blockchain.
This is what I set out to achieve in my Go-Dutch contract:
Mahesh Murthy has an amazing tutorial to setup an Ethereum environment to develop Truffle Dapps on the Ethereum blockchain. You can read it here. Part 1 of the tutorial explains the architecture of the Ethereum platforms and lets you execute a smart contract via a simple web page that runs locally. The blockchain runs locally using testrpc.
In the second tutorial, Murthy deployed the smart contract on Ropsten, Ethereum's testnet blockchain and runs a Truffle Dapp web application to allow users to interact with the smart contract. The Dapp runs locally.