I learned so much in my Beginner Marlowe Meadow Questions threads (special thanks to @bobert & @adatainment), that I thought I should do the same for Plutus now that I am spending all my time there. Maybe it will be helpful to other beginners also.
As a raw beginner, I’ve made huge learning progress in Plutus by going over the Jelly Bean Guessing Game and Naive Lottery smart contract examples that @bobert put out: here and here. They were a little easier to dive into than the ones offered directly in Plutus Playground here.
From what I understand the Builtins aren’t really supposed to be used by the end-user but are meant to be added to the PlutusTx Prelude (which is what a PR request I made got accepted for on the Plutus repo, to add the rest of the ByteString Builtins to the Prelude) so that there is a single unified interface. There isn’t any documentation on the Prelude as of yet (it still needs lots of work anyways), but you can read the source to see what is available and then google the haskell equivalent functions to figure out what is going on: https://github.com/input-output-hk/plutus/blob/master/plutus-tx/src/Language/PlutusTx/Prelude.hs
Otherwise in the near future (span of a couple weeks) I will be releasing a lot more educational Plutus content so stay tuned
Yesterday, I posted an idea for a DApp in the DApp idea thread. It would be a Simple Resource Allocation Voting Contract that would allow for this:
funds are locked in the SC,
users offer various options,
users vote on the various options,
votes are tallied, and
funds go to the address that offered the winning option.
It’s not really something I would particularly want to use, or even see in use necessarily…I still remember the DAO recursive call attack. But, I thought it would be a good way to better understand voting mechanics.
Instead of waiting for someone to show me how to do it, I thought I would just take a stab at it as a learning project.
Obviously, I’m a raw beginner at coding and this thing is riddled with conceptual and technical mistakes. But, if anyone wants to take a peek at it and give me some pointers, that would be awesome:
Looking to learn some Plutus. Checked out the eBook, started the Udemy course etc… All sources warn that the content is out of date and to use caution. With that in mind, should I hold off learning until the next revision comes out or will it be small changes that won’t affect the majority of what I would learn if I take the time to go through all the training now? If it is recommended to wait a bit, any thoughts or guesses as to an approximate timeline before updated materials become available? If there does happen to be an up to date resource available that I just haven’t found yet please do point me in that direction. Much appreciated!
Sorry @mraybin for this delayed answer. Like @michaelpj indicated there were (and still are) quite a few changes to the resources. At the moment I think the best way to start the journey is the testnet sites. You will find all relevant links there, make sure to try out the playgrounds as well as the new videos from the Virtual Summit early July:
If you really want to learn something right now, in my eyes it still makes sense to dig into the old resources that you mentioned, and of course Haskell in general, so I’m posting this for visibility:
Thanks @adatainment! I actually did start the Udemy Plutus course but there were enough differences between what was being displayed vs what was in the playground that I jumped to the http://learnyouahaskell.com/introduction#about-this-tutorial . I’ve been playing around with that for the past few weeks. It’s pretty easy to follow.
I cannot guarantee anything, but I would expect these documentations and courses to be delivered soon. http://learnyouahaskell.com is indeed a lovely and in some way entertaining resource to learn Haskell.
Hi mate I see you classing yourself as a raw beginner back in Jan 19. I would just like to ask did you have any programming experience before starting this and also how are you getting on now which is 2 years on from this post? Thanks.
I would say that I am definitely not any kind of model student as far as learning Plutus or coding in general goes. But, I am happy to describe my mediocre progress over the last few years. Hahahaha
I think prior to starting in on Marlowe and Plutus, I had only done the Khan Academy javascript course and played around in some solidity learning tools like Crypto Zombies. Then, I went through the two Udemy courses above, a course that Bobert (above) put out, and the IOHK ebook on Plutus.
That all just convinced me that I needed to invest some time into Haskell. I started with the “Learn You a Haskell” website and a few (really long) youtube videos. I didn’t make much progress there. So, I launched into “Haskell Programming from First Principles”. That is the book that Charles is always recommending. I bought the 1257 page ebook.
I’ve just been hacking away at it in my free time. I read every single paragraph, do every single exercise (there are a lot of them), and actually execute the exercises in ghci. I think I’ve gone through about 350 pages like that. I’ve definitely had to take some really long breaks from that book due to time commitments. But, over the last two months, I really put a lot of effort into starting over at page 1 and getting all the way to page 350.
I’ve definitely learned a lot about Haskell, functional programming, and coding in general. As a result, Plutus makes a lot more sense. For the first time, I can now write code in Haskell to accomplish some basic tasks. Given some not-too-advanced Haskell code, I can often figure out what’s going on if I can go back to old chapters in the book and review those concepts. I sort of have a basic grasp that allows me to slowly figure non-advanced stuff out if I have access to a textbook. But, I still totally suck compared to even the lowliest of proficient Haskell programmers.
Right now I’m going back and re-reading the IOHK Plutus book and also watching the ADA Makerspace youtube channels to try to re-engage in Plutus with my new basic knowledge of Haskell. We’ll see how that goes. I’m sure it will just show me that I need to go back and finish the other 900 pages of the big Haskell book. Hahaha.
Thanks for getting back in touch. Interesting to read you views on this. I have also done some JS and Solidity through Ivan on Tech but am getting drawn more and more into the Cardano world. Also thank for a list of resources to use. Do you think that this is possible to become a smart contracts developer as I am struggling to find any real sources on this and do you know if you needs to know any web development like React as is needed for Solidity?
I think it’s totally possible to become a Cardano smart contract developer from the starting point of guys like you and I. Not at all easy…but possible. I like that since it seems like the most valuable things always require the most work to achieve. Dan Gable said: “You only deserve what you earn.”
I think if someone put 8 hours per day into it, they could get there surprisingly fast. If someone was working full time at their real job but putting in two hours every night, I think it would also be surprising how fast they could get there. Maybe I’m an optimist. But, these languages and systems were written by humans who just put in the time. I also think any human of above average intelligence could learn them with a little time.
I’m only 350/1257 pages through that gigantic Haskell book, and I already feel like I have the beginnings of most of the basic tools I need to begin coding smart contracts in Plutus. I definitely wouldn’t be a great (or even good) smart contract developer. But, I feel like I have already worked on a lot of the basics tools I’ll need. The pieces I’m still extremely blurry on are mainly the blockchain specific pieces of Plutus that aren’t already a part of Haskell. Again, not trying to oversell my very meager skillset or understanding. I’m just happy about the progress I’ve made compared to a few years ago.
On yesterday’s AMA, Charles indicated that Lars Brunjes is going to run something like a 500 person class for 4-6 weeks to turn out a cadre of Plutus developers. It sounds like we’ll have to apply to get in to that program and that it will be pretty strenuous. I’m not even sure if they’ll allow people like you and I with no programming background. But, that might be interesting.
Your question about the front end user side is a really good one. Others probably know way more about that than me. But, the question I have been asking myself for the last few years is this: “What will fill the role of the metamask of the Cardano ecosystem?”. Will it be something built inside Daedalus and Yoroi or a completely separate browser extension/app/dApp/or etc? I think it was on the last Cardano 360 show that I heard something that made me believe that Sebastian and those guys at Emurgo may be working on something that will fit this role right now.
But, I almost feel like I need to know the answer to that question before I even start thinking about the front end user stuff. Maybe everyone else already knows and I’m just in the dark. Hahahaha.
Definitely take anything I say with a grain of salt. But, I’m also very interested in the questions you are exploring.
Maybe we’ll get lucky and someone in the know will pitch in here with some good info.