Sort:  

You can't write smart contracts with Steem, but you can write decentralized apps that make use of the Steem blockchain. Steem then provides you with a blockchain that can store text and also arbitrary JSON encoded data, so there are lots of things you could built on top of it, but Steem's part in this process is limited to storing textual data.

But that textual data doesn't have to be "posts", you could link to video, pictures, software, etc. stored elsewhere, on IPFS for example. You also get the ability of Steem to then monetize these things through upvotes. Check out SteemProjects.com, that website lists hundreds of apps written on top of the Steem blockchain, that's the easiest way to get an idea of what is possible in this regard.

Hi crypticwyrm. Thanks for this great answer. It has got me thinking of the possibilities.
I am also wondering, is there any tutorial or website that can help me to get started with using the Steem blockchain? How do I use upvotes to monetize?

The developer documentation right now leaves a lot to be desired, you'll have to figure a lot of things out yourself: https://developers.steem.io/

The best way to learn is probably to look at some smaller open source Steem tools on how they do it. I just looked at the two JavaScript Steem libraries dsteem & steem-js and the C++ Steem code and found everything I needed out myself.

As for monetizing upvotes, you basically use Steem as your database. Every item becomes a Steem post and that can be upvoted. And then, to fund development, you can set a percentage of the upvote rewards to go to you. That's how DTube for example does it, they take a 25% cut off the Steem upvote rewards for videos AFAIK.

Thanks for your help! Great info.

You should do tutorials

I plan to do a screencast at some point, teaching specific programming concepts is easiest in a video IMHO. After I've added posting, re-steeming and voting to my app Columns for Steem I should be able to explain pretty much everything about Steem development you'd need to know, then I'll start working on that screencast.

From what I heard, there's going to be a new Steem API at some point which will make everything a lot easier and much more powerful since it'll be using GraphQL. No idea when that's going to happen though, just saw it mentioned in the comments on Github of the dsteem library I think it was. Of course, then I need to learn everything again :) But it's going to be worth it.