[piston.web] First Open Source Steem GUI - Searching for alpha testers

in #piston5 years ago (edited)

Piston.web - Standalone User Interface

Many may already know piston as a tool that simplifies interaction with Steem/Steemit. You can read, post, comment, edit, transfer funds and much more, if you are willing to use the command line.

This changes now. With piston.web, the toolbox now comes with graphical user interface that you can access via your browser. It is fully independent of steemit.com, which means that you can do what you love doing on Steem, even if steemit.com goes down.

Available Features

  • browsing steem posts
  • reading full posts and comments
  • reply to topics and comments
  • upvote/downvote
  • read account details
    • recommended posts
    • blog posts
    • funds
    • transaction history
  • integrated wallet
  • full encrypted (AES + BIP32) for private keys
  • import keys from account name and password

Screenshots

Browse:

Account

Funds:

Post:

Wallet:

Installation

Until we leave pre-alpha, piston.web is on a different branch.

git clone https://github.com/xeroc/piston
cd piston
git checkout feature/standalone-web
make install-user
# install extra requirements for piston.web
pip install -r requirements-web.txt

Usage

piston web

On first run, you will be asked to provide a passphrase for your new wallet. Empty password are allowed but result in private keys being stored in plain text.

After that, you will see

 * Running on http://127.0.0.1:5054/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: 227-869-909

Ignore the debugging output and start using piston.web in your browser
by accessing

http://127.0.0.1:5054/

NOTE: piston.web will only be reachable from the same machine (localhost).

Technologies

Backend

The backend is written in python using

  • Flask (with Jinja2)
  • python-steem.

It offers the HTML files and a Socket-IO for real-time communications.

Frontend

These technologies have been used so far in piston.web:

  • Bootstrap
  • Markdown
  • Font-Awesome
  • Plain Javascript

Wallet

The wallet is only accessible from the backend. All keys are encrypted with a random master password that is stored in an SQLite3 database in its AES encrypted form. Each private key is encrypted with the master password using BIP32 and stored in a SQLite3 database. The wallet will make backups of the SQLite3 database every week and keep several weeks of backup.

Todos

  • Transfer of funds
  • PowerUp, PowerDown
  • Trading
  • Account Administration (changing keys etc)
  • Allow to attach JSON object to posts
  • Secure socket.io with a password
  • layout and style improvements

Contributions

Currently, we are looking for the bravest of the bravest to help us test what is already there and give

  • bug reports
  • improvement proposals
  • feature request

Please use the github issue tracker to make it easier for us to remember all the feedback.

Important Note

piston.web is alpha software. For that reason, you need to expect it to break at any time. Use at your own risk.

Update 1

I'd like to clarify that this GUI is not meant to replace steemit.com or be used as a hosted, public site. It rather offers a personal, localhost-only page that you can use to access your wallet. Exposing the piston.web to a publicly accessible port is not recommended!

Update 2

I fixed the sqlite3.OperationalError: unable to open database file error earlier today so that people can actually take a look.

Update 3

More short-term fixes for the weekend-testers:

* [2016-07-23][bf3dae5] | [setup] make sure the user uses python3
* [2016-07-23][c31eec7] | [web] highlight own posts
* [2016-07-23][03e0d2f] | [web] fix reply identifier not in the form
Sort:  

I'm so geeked about this... I feel like I just need to take the day off and dive right in (though I also want to do a code review). This, to me, is the key to this whole experiment which will, in a sense, save the Internet. This gets us closer to what the Internet was supposed to be: an interconnected web of decentralized content which could be modified with a POST or PUT and retrieved with a GET. When people can run a copy of their own favorite social media platform from any device any where in the world and "the server" never goes down because there is no server besides the blockchain, that's just amazing. Might also be amazing to have contributor keys which allow people to edit/post on shared accounts. Man, the possibilities are mind blowing.

Thanks for putting this out there, @xeroc.

Wow, I think I get what you are saying here... I've never thought of it like this... that's amazing. I'm thinking the server is replaced with a peer to peer datasource/database ? (Well I guess that's what the blockchain is). Kind of operates like DNS? So each node doesn't need to store the whole blockchain, just the parts it has accessed. Something like that, or am I missing it?

There are public API nodes (such as this.piston.rocks) that run the same database as steemit.com (technically, that database is a blockchain). That said, you can

  • use steemit.com and their semi-public API
  • connect to this.piston.rocks and use that one
  • or deploy your own node and use that one

Technically, there is a way for public APIs to profit from offering a public API node and that is: People are asking for the latest posts in a category with a certain sorting, but no one prevents the API provider to put their own posts higher in the ranking. No one actually even prevents them to give your wrong data. That said, you shouldn't trust any public API unless you trust the operator but on the other hand, the API provider can use it to monetize their public api service.
This of this as a google ranking. If you get the posts from steemit.com, you will see their ranking while when you use another service, you will see another ranking (potentially added extra posts to fund their server) .. the only way to get a neutral picture is to use your own server or maybe pay for a neutral party to provide a neutral point of view.

As a note, this.piston.rocks currently provides the most neutral point of view there is but that might, or might not change ..

Ok, yes I see.
I'm wondering if there is a way to avoid having to store the entire blockchain on a node. There are probably many problems with this idea. But I can see blockchains growing very large over time. I'm sure the steem or other blockchains have figured this problem out or are working on it.
Now that I think about it, my idea of not storing the entire blockchain, violates one of the fundamental ideas of blockchains, trust. But as you said, you also have that problem when using someone else's API to the blockchain.
Sorry, just thinking out loud here.

The idea is to let them be hosted by companies and witnesses and people only interact with the public API nodes .. pretty much like blockchain.info or electrum use light-weight clients.

Hey am new on steemit please support me to grow.
Hope you will help me out....

https://steemit.com/mgsc/@cryptoturdz/countries-from-where-whales-belongs-in-cryptocurrency

Similar to SP, SMD tokens cannot be purchased directly on an external exchange. SMD are primarily earned through contributing but can be purchased by converting STEEM tokens to SMD tokens.

Actually Steem Dollars can now purchased on external exchanges !
https://poloniex.com/exchange#btc_sbd
https://bittrex.com/Market/Index?MarketName=BTC-SBD

PS Abbreviation of SBD = Steem Backed Dollars
or just SD = Steem Dollars (not SMD please edit)

"from any device any where in the world and "the server" never goes down because there is no server besides the blockchain, that's just amazing"

This! Remember all the times your favorite sites have downtime and/or DDOS and/or something else. No downtime on blockchain, ever!

Currently, there still is a central point of failure and that is the this.piston.rocks API server. However, I plan to extend this quite a bit and use geolocated DNS with several servers around the globe to make it more robust ..

I think it would be more impotent to have a way for independent community members to run API nodes them self, then having a nice geo redundant deployment managed by one party.

What dose the API Server consists of? Is this just the API of steemd or is there another service involved and if so would it be possible to have the code available to play around with and try to build a independent setup connecting to a local steem-node?

Not to be ungrateful, my first reaction to this post was off course: awesome, finally a way to use steem independent of steemit.com like a real decentralized app. And it still locks to me a lot like that, only this small part seems missing, so thanks a lot for this awesome project!

Loading...

Wouldn't it be a good idea to offer an incentive for running an API server in steemd itself? Like Masternodes for DASH, or an Incentive Node for VCASH.

Absolutely, I think it can be easily done by just asking Steem to pay for their public APIs. A post about the APIs statistics now and then might bring in enough money to continue service. Time will tell.

Is it hard to run your own API server?

I think someone has even created a docker image for steem .. search on steemit or github

Yes it is hard if you are fluent with the required programming language.

Funny, my original comment mentioned having thousands of clones of this.piston.rocks, but I ended up removing that part before I posted and talked about how this gets us a step closer. Maybe some day that code can also be decentralized, self-hosted, and distributed. Either way, thanks again for all your hard work, @xeroc! To me, stuff like this is the difference between success and... something else that isn't success. :)

In the realm of decentralized services, I think that consul is really, really overlooked, especially the potential of consul, coupled with ultra-low-cost servers. Once a machine is in a consul cluster, it is "bound" to the consul master and that master can execute commands on it as though it were root.

Consul also manages services and service discovery.

It can be run alongside Nomad, which can schedule anything that can be run on linux in an extremely neat, tight fashion.

I wanted to add the ability to change the API node. piston allows that already, but the gui has no feature for that yet. It will come for sure.

Yes, we need each one a node, unfortunately actually steem doesn't build on ubuntu 14 or debian jesse so it's really difficult to get one, the to be sure nobody will get one they take this wonderful instructions https://github.com/steemit/steem/blob/master/BUILD_UBUNTU.md and no bin release https://github.com/steemit/steem/releases actually I find this a shame... Fortunatly at least @xeroc works with us :)

It's not entirely correct. The default piston setup connects to this.piston.rocks as the backend API server. However you can already change it to your own node by running

piston set node ws://ip:port

There will be a nicer gui feature to do this eventually.

WoW 40 grand dollar fot this post, thats way beyond sick :o

Would be interesting if this became a successful method for funding open source projects wouldn't it?

Absolute ;)

Considering the work Xeroc does? This is like maybe half what a single developer would make in a year. Xeroc has been giving away tons of free code for the bitshares community as long as there has been a bitshares. I just did the math at 40g's he's made about $1.50 per hr.

Yeah it's sick. This man is probably the least appreciated contributor here. This tool is friggin awesome! I don't do python but I'm reading the code and learning the internals of how this stuff works, which is great because our devs don't do documentation.

Wish there was a tipping option for people like Xeroc!

WoW 40 grand dollar fot this post, thats way beyond sick :o

I tend to agree. Thought it might reach a couple $k, but >$40k is .. quite some appreciation :)

Me also. But you deserve it. You did an super jobb making this. This is why steemit is so amazing. It helps out who deserve it. Keep up the good work mate. Im suprised

I still have that Acidyo BitcoinTalk account available for sale 60 Steem and its yours.

Hey am new on steemit please support me to grow.
Hope you will help me out....

https://steemit.com/mgsc/@cryptoturdz/countries-from-where-whales-belongs-in-cryptocurrency

I need to learn how to build/install it. Do you know any good tutorial on how to build this kind of built?

Tutorials will come when the product is read for the masses. The current code is rather a Proof of Concept and in Alpha stage, even though it can already be used for quite some things. Give me some time to improve it further and I am sure I can release something stable in a bit .. (no ETAs in software development)

one step closer and piston is crushingit :)

Buufaaaa... Uuuuuuh buaaaaaahhh 44.000$ and increasing! ! Its a buuuuuuuuuufff....

i asked myself how is it possible to make so much cash for few words

I'm more geeked by the fact that pistons can generate steem, piston, steem, seewutididthar?

Cool GUI bro.

Thanks @trogdor!

I don't think the early Internet pioneers were as excited as we are right now. When they typed out SMTP commands in their terminal or transferred a file from one university campus to another, I can't imagine they had any idea what they were birthing. We, on the other hand, live with those results all around us. It's hard not to imagine an even more amazing future given the results of the past we currently enjoy.

but the blockchain rely on infrastructure no?

As in internet connectivity between nodes? Yes. This is also something people are working to solve by building mesh networks, custom wifi networks, or even balloons such as the Google Loon project. https://outernet.is/ is another interesting example using micro satellites. Hopefully soon we will decentralize all the things!

Yep, one more I forgot to mention in my list! :)

It might sound great in theory, but in reality it might be much harder to realize. Due to the blockchain size after a few years you might need a very powerful computer to host the blockchain, which isn't possible for "normal" devices. Just my 2 steem.
Anyway xeroc's libraries are always top notch. Thump up for him.

I don't think you will need a lot of "power" to host the Steem network long-term. You will need a lot of disk space, but disks are cheap. The only difficult things for the node to do is a replay. Those currently take about 2 minutes (a joke if you conpare to other blockchain techs). Either way, the underlying technology is soooo awesome, that I don't see a scalability issue in near future.

Oh, btw, on this.piston.rocks, there are actually two witness nodes running in parallel, connected to nginx via fail-over/load balancing. That means, I can update the code and replay the one node, while still serving the traffic with the other node and vise versa :)

I read your codes and learn a lot from it. Thanks Fabian.

Hey am new on steemit please support me to grow.
Hope you will help me out....

https://steemit.com/mgsc/@cryptoturdz/countries-from-where-whales-belongs-in-cryptocurrency

Steems away!

Not usually upvoting animated gifs, but that one is cool, original and relevant so exceptionally...

firing on all cylinders

It's refreshing to see a new gif aside from that Game of Thrones one =P

Ok, now that deserves a 5-figures payout!
@xeroc: do you have a witness account to help you support developments?

I do not run t apprecitae your offer for an upvote.

Ping me on Slack when/if you do: @talerecursion

Looks pretty awesome! I may try to run it up on one of my servers. If I do I'll definitely get linked up on github to keep you updated.

This is for personal use .. it does not allow others to login .. if you expose the web to the public, you will compromise your private keys. The purpose of this is not to host a new website, but to offer a standalone app that people can run at home .. locally!

Oh, haha, I've gotten so used to experimenting with things on my server I just jumped to assuming it was to be a web app. Thanks for the clarification.

You might want to make a big fat warning on this post and in the READMEs about this point. It was only clear after a bit of thinking, that this really is intended to be something you run locally.

You might even consider adding some strong speed-bumps before anyone can use something other than 127.0.0.1 to serve content.

This is definitely a game changer. It brings decentralization to a whole nother level. The analogy is now like BitTorrent, where in this P2P setup all can just run a client node and connect to the network. Here, even if steemit.com were brought down, people can start up their own node and connect to the blockchain! Genius!

Looking great. I'm a UI designer and I'm think it was definitely a good decision to use Boostrap for the graphic interface, it's very clean and easy to navigate.

I absolutely love this! I have some ideas for a few things I'd love to see added that could make things even easier.

I assume you're open to pull requests? Expect some chatter from me via slack too :)

Yea feel free to contribute, i will also start work on the GUI design improvements this weekend.


I am glad you will take more rewards than she did...

xerox, looks great. Lets get it tested and out of alpha. Could the piston toolbox be used for an App or DApp!? Or maybe package it with a server for mobile use!

@xeroc I tried to use your piston.web, put there's an error that I cannot figure out. This is it:

Traceback (most recent call last):
File "/usr/local/bin/piston", line 9, in < module>
load_entry_point('steem-piston==0.2.3a0', 'console_scripts', 'piston')()
File "/usr/local/lib/python3.5/site-packages/pkg_resources/init.py", line 542, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/local/lib/python3.5/site-packages/pkg_resources/init.py", line 2569, in load_entry_point
return ep.load()
File "/usr/local/lib/python3.5/site-packages/pkg_resources/init.py", line 2229, in load
return self.resolve()
File "/usr/local/lib/python3.5/site-packages/pkg_resources/init.py", line 2235, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
File "/usr/local/lib/python3.5/site-packages/steem_piston-0.2.3a0-py3.5.egg/piston/main.py", line 9, in < module>
from .storage import configStorage as config
File "/usr/local/lib/python3.5/site-packages/steem_piston-0.2.3a0-py3.5.egg/piston/storage.py", line 321, in < module>
if not configStorage.exists_table():
File "/usr/local/lib/python3.5/site-packages/steem_piston-0.2.3a0-py3.5.egg/piston/storage.py", line 120, in exists_table
connection = sqlite3.connect(sqlDataBaseFile)
sqlite3.OperationalError: unable to open database file

I ran into this problem and reported the bug to @xeroc already.

The workaround is to do:

mkdir ~/.local/share/piston

When do I type in this code?

I missed two lines of code to generate the above directory. You can create that directory by hand to fix the error. I will fix the repository asap

I fixed this issuer earlier today, you may want to run a git pull and reinstall

Thanks for the help, but... I have encountered another problem... here it is :

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/private/var/folders/7x/_dsd44s94_nft92r9myn3y0h0000gq/T/pip-build-MsWRmL/websockets/setup.py", line 17, in <module>
    with open(os.path.join(root, 'README'), encoding='utf-8') as f:
TypeError: 'encoding' is an invalid keyword argument for this function

----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/7x/_dsd44s94_nft92r9myn3y0h0000gq/T/pip-build-MsWRmL/websockets/

Note : I am running a Mac OS X

Thanks for the help, but... I have encountered another problem... here it is :

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/private/var/folders/7x/_dsd44s94_nft92r9myn3y0h0000gq/T/pip-build-MsWRmL/websockets/setup.py", line 17, in <module>
    with open(os.path.join(root, 'README'), encoding='utf-8') as f:
TypeError: 'encoding' is an invalid keyword argument for this function
----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/7x/_dsd44s94_nft92r9myn3y0h0000gq/T/pip-build-MsWRmL/websockets/

Note : I am running a Mac OS X

Please make sure to run Python3!

i'm in this weekend 8] good job @xeroc

@xeroc

Collecting websockets==2.0 (from -r requirements-web.txt (line 37))
  Using cached websockets-2.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/v2/9vnp2_3x5pv2ncqhlnc3vg9c0000gn/T/pip-build-FNNORu/websockets/setup.py", line 17, in <module>
        with open(os.path.join(root, 'README'), encoding='utf-8') as f:
    TypeError: 'encoding' is an invalid keyword argument for this function
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/v2/9vnp2_3x5pv2ncqhlnc3vg9c0000gn/T/pip-build-FNNORu/websockets/

hit me that error in the last command

you need to use python 3 and cannot use python2. I should probably add a check for the version somewhere

when I run "pip install -r requirements-web.txt" I get

"Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-xOh01Y/websockets/"

any idea?

Thanks

With only that fraction of error, I can't tell much about the reason, but I would assume that you try to install it using python2 and not python3.
I've added a check in the setup.py so people can see the error right away

Thanks for the answer wil look into it!

Looking at the Post function in the screen shot, I don't see any of the Editor formatting commands. Is that coming?

Currently, the editor just takes plain (markdown) text. I will add a preview asap and maybe even add a nicer steemit-style editor eventually. Give me some time for this.

Looks awesome! I was really waiting for a third party GUI for Steemit! Hope to see an app next.

I hope to figure out how to do apps like electrum (which is a python app) and make it installable with a simple msi installer, but I am not there yet .. need to get the code base done first.

Well, you are in luck, I am precisely beginning at this, but I need a little help at navigating the codebase. Mine will not target Qt, I'm a gnome man and I'll wave the flag for Stallman all day long. The black flag, of course. I am not exactly flush at the moment and although I would love to help with documentation, I need help myself to navigate the code. Your python code is far advanced on my beginner level knowledge. If there is any way I can help this progress, I am so on for it.

I quite like the idea of making a simple binary-based installer that gives you the option to put a witness node on a machine, and maybe we can set up some kind of DHT directory to distribute the load, move this from client-server model to a more distributed model, in keeping with the whole philosophy of all of this. With this, people could , with their nice shiny 1st world machines, help boost access to steem even further by providing a cloud of RPC endpoints. Indeed, I know a little about building debian packages, and I know Steem is still in beta, but it would be truly amazing if we could scale this thing up really fast and by next year be looking at something that is all set to trounce bitcoin itself..

Blockpay already now accepts Steem payments. I see no reason why this should not explode, not least for the reason that development itself is being funded within its framework. This in itself is revolutionary.

edit: i found the API at readthedocs: http://piston.readthedocs.io/en/develop/lib.html

massive kudos to xeroc!

@xeroc you rock !!!

So this will work even if steemit.com is down, for the most part, right?

Correct .. Steemit.com uses the Steem network (a blockchain) .. so does piston.

Most people are unwilling to use command line. The GUI will make this more accessible to a larger user base.

Gotta be feeling pretty good. Well done, well deserved.
giphy-13a5723.gif

Did you do it alone or did you get help ? If you did it alone ... WOW.

I did most of the code alone. @cass helped me bigtime with the logo and wants to assists with design/layout aswell. Hoping for @svk to assist on the trading page eventually.
Piston itself build on top of 2 more libraries that I wrote as well:

  • python-steem (which itself build on)
  • python-graphenelib (mostly known from the BitShares community, graphene is the underlying technology)

Been working on python-graphenelib for years now :)

Can someone explain how the blockchain replaces a server? I understand how the block chain can contain data, but what mechanism is creating the web server application? Where does the DNS point to?

The blockchain is maintained via a decentralized p2p network running steemd nodes. These nodes have the whole STEEM database stored on disk and the operator of those nodes can choose to open a public API for people to query against that database (e.g. get content, posts, users or even send new posts etc)
For those that know about Bitcoin, the public API is pretty much what blockchain.info API offers .. just that it is a standardized API that anyone can decide to run.

Formal education will make you a living. Self-education will make you a fortune
Bravo!

Thanks for that answer, is steemit.com a single point of failure or is the website hosting distributed as well?

They are working on a more robust setup to my knowledge. I am pretty sure they haven't expected that kind of growth.

So in effect, what this means, is that everyone will have their own personal library of all content thats ever existed up to that point??

Not quite allthough technically possible. All data is on a public blockchain and you can download that blockchain entirely. Piston however talks to one of these nodes that hold the blockchain in storage and answers specific queries. One of these nodes is operated by me and available on this.piston.rocks.

Super! When will be beta? Is there open testing for Win?

Hehe .. its done when its done :)

hehe, laconically. But i hope it will be soon. very cool work!

Well there goes my weekend ;)

I started playing with your python-steemlib first and I really like and appreciate it. Will play around piston for sure too.

You can get started with something simple as this:

from piston.steem import Post, Steem
post = Post(Steem(), "@xeroc/piston")
post.reply("Title", "body", author="YOURACCOUNT")

Or you go through piston using the command line tool:

piston read @xeroc/piston-cli-quickstart

@xeroc This is super epic.

Btw I have placed Piston.Web also on SteemTools ... so we keep a handy overview of apps & tools & services for the community.

SteemTools - indexing all tools & services for Steemit users

Wonderful work @xeroc! No wonder why you don't have time to update the python lib because you've been working on this project!

The problem here is that I do changes to underlying libraries as well .. (mostly extensions) but I don't want to break compatibilities in the master branch .. that's why I usually release new versions of all of the libraries at the same time:

  • python-graphenelib
  • python-steem
  • piston

Hi @xeroc, I was recently wondering if there were other ways to access steemit than the website steemit.com well I guess this answers the question. Also I think it makes no sense having only 1 point of access if the thing is decentralized. I'll be happy to participate in the testing. Where do I get it?

Where do I get it?

The code is on github:

https://github.com/xeroc/piston

AMAZING! Count me in as a tester! I'm here all day everyday anyway!

Over $40,000 for the First Open Source Steem GUI, Justified!

Wow this must be the best project for Steemit. You've done a great Job. This will help a lot of people very much.

How long did it take you to build it ?

Given that python-graphene, python-steem an some corefunctionalities already existed, the web application took about 10 days of full time developent. Of course one needs to first know some libraries and tool and there are many work days yet to be put into this before i consider it stable

Awesome...
You know what is next...
steem ME UP SCOTTY!

Very very cool project :) Did you ever thought about providing Piston as a Docker Container Image? This would help to get it runnung easy on all operating systems :)

$40,000 fro the post. Wish I am as geek as you. Don't know much about technology but know lot about children.

great, im already using it, awesome design aswell

gotta add a

cd piston

to the install directions. The full install reads like

git clone https://github.com/xeroc/piston
cd piston
git checkout feature/standalone-web
make install-user
# install extra requirements for piston.web
pip3 install -r requirements-web.txt

Please include in the install steps:

git clone https://github.com/xeroc/piston.git
cd piston/
git checkout feature/standalone-web
...

Done .. Thanks!

error: pathspec 'feature/standalone-web' did not match any file(s) known to git.

I also was not able to get this git checkout command to work. I am going to just look at github, I suppose the correct information is stashed away there somewhere. I don't want to run the app, just look at the code to learn how to use piston from within python properly.

never mind, I actually found the piston API documents. They are excellent btw: http://piston.readthedocs.io/en/develop/lib.html

What I was waiting for! Had a bunch of ideas that would have taken entirely way too long to build by myself. You will be seeing something from me using this ASAP! Thank you for your hard work, kick ass! I'll give you my new Michael up vote!

I think I just peed a little...

Only concerns...will it hurt steemit.com SEO because of duplicate content?

I've had similar concerns. Will authors be okay with multiple versions of their content all over the internet? Should we be thinking about adding a canonical URL to Steemit posts so they call point back to the same source? This is probably a larger question regarding the overall blockchain approach. New tech, new challenges.

I think being that the whole point is that multiple versions are already all over the internet is part of how it becomes censorship resistant is achieved. It also is how a system like this has the scalability to become as big as facebook. And finally, by making this possible, developers like xeroc are helping it grow, because 'canonical' does not apply to the website, but to the blockchain. Everything after steemit.com is an address on the blockchain.

No it will not .. Simple because this is not a hosted site. This is for personal and local use only. Hence, google and other search engines won't find that content

I am definitely getting my Geek-on right now!

Oh, give the man a bloody medal!

Ohh Doctor you are recognizable everywhere! I love you Capaldi! It's him, right? or Maybe I mistaked doctor? is it you Doctor House? :P

I'd like to take the opporunity and thank everybody for his upvote!

The support of the Steem community has helped me fund the development of piston for quite a while without me having to ask for help.
The fact that this thread has received that much feedback and upvotes shows that Steem can not only grow as a community but also support those that help improve it! This is a milestone!

Thank you xeroc for making the piston library. I'm using it in 2 projects right now (TBA), and it has been working pretty well for me.

Good Job man ! This is a huge Milestone!

Can't wait to see whats in the future!

#takeiteasy

can i use my bitcoins . is there going to be some bitcoin wallet integration

Working my way through figuring out the install now :)

@xeroc - what would it take to integrate some simple contracts into this? maybe layered on top of Ethereum somehow ?