# Sneak Peek of new Daml Training Videos for Daml forum members

**URL:** <https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600>\
**Category:** Outreach\
**Created:** [May 17, 2021, 1:33pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600 "2021-05-17T13:33:26Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![Chris\_Olson](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/chris_olson/32/1918_2.png) [@Chris\_Olson](https://forum.canton.network/u/Chris_Olson)\
**Post date:** [May 17, 2021, 1:33pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/1 "2021-05-17T13:33:26Z")

</div>

Hi Daml’ers,  
We’ve got a sneak peek of our new Introduction to Daml video training series we’ve been working on and we’d love to get your feedback. While we continue to work on the UX a bit, the first 4 of 6 episodes are available now through our Learning Management System. You can get them [here](https://daml.talentlms.com/catalog/info/id:132). All feedback welcome!

---

<div class="post-metadata">

**Author:** ![anthony](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/anthony/32/419_2.png) [@anthony](https://forum.canton.network/u/anthony)\
**Post date:** [May 17, 2021, 2:17pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/2 "2021-05-17T14:17:20Z")

</div>



---

<div class="post-metadata">

**Author:** ![mpetran](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/mpetran/32/1919_2.png) [@mpetran](https://forum.canton.network/u/mpetran)\
**Post date:** [May 17, 2021, 3:28pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/3 "2021-05-17T15:28:01Z")

</div>

Hi,  
this couldn’t have come at a better time! I am trying to get to know DAML as we would like to leverage it in our company and actuallly have just started during the weekend.

I will give feedback as I finish the different episodes.

**Episode 1**  
Great intro and a source of information as the DAML content seems to be scattered through different websites/resources; for example I had absolutely no idea about the interactive tutorials on [daml.com](http://daml.com) and wasn’t sure where to go after playing in [hub.daml.com](http://hub.daml.com)

Main point to consider:

- Typically learning videos are cut to smaller sections and it is for a good reason. If anyone wants to return to the video in the future to find some specific info / statement, they will have to skim through the whole 30 minute video. I would say there were some pretty obvious places to do the “cut”, at minimum Installation, Docs, Course project.

- Presenter mentioned some business materials at the very beginning but they were not actually included in the “description” as was said in the video.

Nevertheles great job and keep the materials coming.

Cheers,

---

<div class="post-metadata">

**Author:** ![anthony](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/anthony/32/419_2.png) [@anthony](https://forum.canton.network/u/anthony)\
**Post date:** [May 17, 2021, 6:36pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/4 "2021-05-17T18:36:13Z")

</div>

Thanks for the feedback @mpetran it’s very helpful and welcome to the forum. Glad you’ve found the videos useful. Also we have a list of our [informational and learning sources here](https://discuss.daml.com/t/daml-learning-materials-and-resources/1738) and are working to make them more accessible/findable in the future on [daml.com](http://daml.com).

Also cc @nemanja and @Levente_Barczy you might want to see the feedback above.

---

<div class="post-metadata">

**Author:** ![quidagis](https://avatars.discourse-cdn.com/v4/letter/q/dbc845/32.png) [@quidagis](https://forum.canton.network/u/quidagis)\
**Post date:** [May 17, 2021, 11:26pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/5 "2021-05-17T23:26:15Z")

</div>

I thought that I’d jump into the training, both to learn me some more and offer feedback (… as if there was any doubt 😀)

So far in Episode 1, my only feedback is the presenter volume. It seems that @Levente_Barczy is not using a high-quality microphone, or if he is, his positioning is too far from it which creates a very, low-volume audio.

Full marks to @Levente_Barczy @nemanja @Chris_Olson et al for putting this together, very slick 👍🏻

---

<div class="post-metadata">

**Author:** ![nemanja](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/nemanja/32/842_2.png) [@nemanja](https://forum.canton.network/u/nemanja)\
**Post date:** [May 18, 2021, 7:13am UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/6 "2021-05-18T07:13:29Z")

</div>

Glad to hear that you find the videos useful @mpetran @quidagis! And many thanks for your feedback, will help us for sure with improving it 🙂 🙏

---

<div class="post-metadata">

**Author:** ![Stephen](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/stephen/32/102_2.png) [@Stephen](https://forum.canton.network/u/Stephen)\
**Post date:** [May 19, 2021, 3:29pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/7 "2021-05-19T15:29:22Z")

</div>

Part two inspired me to write up [an expansion based on usage of records](https://discuss.daml.com/t/workflow-template-factoring-with-records/2608).

---

<div class="post-metadata">

**Author:** ![quidagis](https://avatars.discourse-cdn.com/v4/letter/q/dbc845/32.png) [@quidagis](https://forum.canton.network/u/quidagis)\
**Post date:** [May 30, 2021, 11:27pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/8 "2021-05-30T23:27:07Z")

</div>

I have been in the training portal for almost 2 hours now and just noticed on the front page that there are now additional options:

- [Daml WebIDE](https://daml.com/websdk)
- [Daml Documentation](https://docs.daml.com/)
- [More](https://daml.talentlms.com/#)
- [User. Name | **Learner**](https://daml.talentlms.com/#)
- [Messages](https://daml.talentlms.com/#)

This looks really good.

Do you want further feedback here, or would you prefer it through the training platform messaging service?

---

<div class="post-metadata">

**Author:** ![nemanja](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/nemanja/32/842_2.png) [@nemanja](https://forum.canton.network/u/nemanja)\
**Post date:** [May 31, 2021, 6:02am UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/9 "2021-05-31T06:02:39Z")

</div>

Feel free to post further general feedback here 🙂

---

<div class="post-metadata">

**Author:** ![quidagis](https://avatars.discourse-cdn.com/v4/letter/q/dbc845/32.png) [@quidagis](https://forum.canton.network/u/quidagis)\
**Post date:** [June 5, 2021, 8:37am UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/10 "2021-06-05T08:37:55Z")

</div>

In Episode 3, I was able to get the testing to finally work correctly, only _after_ I fixed the 2 ridiculously minor typos from Episode 2 😠

Executing the Script Test, saw the results, no errors but noticed that the output of the Currency and Royalty Rates as being:

- Currency: 100.0000000000
- Royalty Rate: 0.0500000000

Questions:

- Why is the decimal point for these floats set to 10 in this instance?
- Is this solely on the tests in VS Code?
- If not, can the decimal point be explicitly nominated as per Python’s f-strings (Python 3.6+)?

---

<div class="post-metadata">

**Author:** ![quidagis](https://avatars.discourse-cdn.com/v4/letter/q/dbc845/32.png) [@quidagis](https://forum.canton.network/u/quidagis)\
**Post date:** [June 6, 2021, 2:13am UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/11 "2021-06-06T02:13:51Z")

</div>

In Episode 3 - Daml Connect SDK Tooling, I am stuck with an error on the Bob modifications, The error is with the ‘bobOffer ← submit alice do’ as when this block is commented out, the error is no longer active.

I have watched the video now 2 times, and totally wiped the code examples, probably another typo 🤦🏻‍♂️

Current Main.daml and Token.daml below.

> **Episode 3 - Daml Connect Main.daml**
>
> ```haskell
> module Main where
> 
> import UserAdmin
> import Daml.Script
> 
> setup : Script ()
> 
> setup = script do
> alice <- allocatePartyWithHint "Alice" (PartyIdHint "Alice")
> bob <- allocatePartyWithHint "Bob" (PartyIdHint "Bob")
> userAdmin <- allocatePartyWithHint "UserAdmin" (PartyIdHint "UserAdmin")
> 
> now <- getTime
> 
> aliceIssuer <- submit userAdmin do
> createCmd Issuer
> with
> userAdmin = userAdmin
> issuer = alice
> 
> originalToken <- submit alice do
> exerciseCmd aliceIssuer MintToken
> with
> description = "Cat Pic 1"
> initialPrice = 100.00
> currency = "USD"
> royaltyRate = 0.05
> 
> bobOffer <- submit alice do
> exerciseCmd originalToken Offer <-- This is the error: **Not in scope, data constructor 'Offer' typecheck**
> with
> newOwner = bob
> price = 200.00
> 
> bobRequest <- submit bob do
> createCmd OwnerRequest
> with
> userAdmin = userAdmin
> owner = bob
> reason = "I've got connections"
> 
> submit userAdmin do
> exerciseCmd bobRequest GrantOwnerRights
> 
> return ()
> 
> ```

> **Episode 3 - Daml Connect Token.daml**
>
> ```haskell
> module Token where
> 
> import Payment
> 
> {-
> Content creators can mint NFTs
> Owner can sell NFTs
> Owners pay royalties on sale 
> Participants must be explicitly permitted
> Royalty Rate = 2.75%
> GST = 15%
> Currency_Default = NZD
> -}
> 
> -- behaviour
> -- datamodel
> -- rights/obligations
> 
> template Token
> with
> issuer: Party
> owner: Party
> description: Text
> userAdmin: Party -- makes sure that the issuers and owner are legit
> issued: Time
> lastPrice: Decimal
> currency: Text
> royaltyRate: Decimal -- 2.75%
> where
> signatory issuer, userAdmin
> 
> controller owner can
> Offer: ContractId TokenOffer
> with
> newOwner: Party
> price: Decimal
> 
> do
> create TokenOffer with ..
> 
> template TokenOffer
> with
> issuer: Party
> owner: Party
> description: Text
> userAdmin: Party -- makes sure that the issuers and owner are legit
> issued: Time
> newOwner: Party
> price: Decimal
> lastPrice: Decimal
> currency: Text
> royaltyRate: Decimal
> where
> signatory issuer, userAdmin, owner
> 
> key (issuer, owner, description): (Party, Party, Text)
> maintainer key._2
> 
> controller newOwner, userAdmin can
> AcceptToken: (ContractId Token, ContractId Payable, ContractId Payable)
> do
> fromNewOwnerToOwner <- create Payable
> with
> from = newOwner
> to = owner
> amount = price
> currency
> reference = "Notional for `" <> description <> "`."
> 
> royaltyPayment <- create Payable
> with
> from = newOwner
> to = issuer
> amount = (price * royaltyRate)
> currency
> reference = "Royalty for `" <> description <> "`."
> 
> newToken <- create Token
> with
> owner = newOwner
> lastPrice = price
> ..
> 
> return (newToken, fromNewOwnerToOwner, royaltyPayment)
> 
> ```

Fixed: I had removed the ‘import Token’  
statement from the Main.daml.

---

<div class="post-metadata">

**Author:** ![Zsolt\_Holman](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/zsolt_holman/32/2075_2.png) [@Zsolt\_Holman](https://forum.canton.network/u/Zsolt_Holman)\
**Post date:** [June 6, 2021, 12:03pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/12 "2021-06-06T12:03:55Z")

</div>

Hi @quidagis

What does your ‘UserAdmin’ module look like?

---

<div class="post-metadata">

**Author:** ![Mate\_Varga](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/mate_varga/32/2308_2.png) [@Mate\_Varga](https://forum.canton.network/u/Mate_Varga)\
**Post date:** [June 6, 2021, 6:27pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/13 "2021-06-06T18:27:17Z")

</div>

I think you just need to import Token at the top in Main.daml

---

<div class="post-metadata">

**Author:** ![quidagis](https://avatars.discourse-cdn.com/v4/letter/q/dbc845/32.png) [@quidagis](https://forum.canton.network/u/quidagis)\
**Post date:** [June 6, 2021, 10:54pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/14 "2021-06-06T22:54:58Z")

</div>

An easy fix, thank you @Mate_Varga

I am sure that I did have ‘import Token’ in before but for whatever reason removed it. Could not see the Forest for the Trees 🤦🏻‍♂️

I now realise that when running the Script Tests in VS Code, if it fails, then you only get the Transactional View. If it passes, you get the Transactional & Table Views.

---

<div class="post-metadata">

**Author:** ![Mate\_Varga](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/mate_varga/32/2308_2.png) [@Mate\_Varga](https://forum.canton.network/u/Mate_Varga)\
**Post date:** [June 7, 2021, 1:23am UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/15 "2021-06-07T01:23:52Z")

</div>

It shows the transactions view by default because it’s the one having the error messages. I still have a button to switch to table view and it shows me the same state if I comment out the erroneous last submission.

---

<div class="post-metadata">

**Author:** ![Gary\_Verhaegen](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/gary_verhaegen/32/81_2.png) [@Gary\_Verhaegen](https://forum.canton.network/u/Gary_Verhaegen)\
**Post date:** [June 7, 2021, 10:36am UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/16 "2021-06-07T10:36:53Z")

</div>

> [@quidagis](#):
>
> - Why is the decimal point for these floats set to 10 in this instance?
> - Is this solely on the tests in VS Code?
> - If not, can the decimal point be explicitly nominated as per Python’s f-strings (Python 3.6+)?

- Because they’re not floats. Daml, by design, does not have floating-point arithmetic. What it does have is fixed-point arithmetic (and numbers), where the type includes the precision. These numbers are of type `Decimal`, which is just an alias for `Numeric 10`, the type of fixed-point numbers with 10 decimal places.
- This is the printing behaviour in the JSON representation: a `Numeric x` prints with `x` digits after the dot, even if they’re all `0`. The `Show` instance for `Numeric` does not seem to do that; I don’t know whether that discrepancy is intentional, but at this point it’s probably not going to change (as that would break backwards compatibiity).
- I don’t think Daml has anything like `printf` at the moment, but, as mentioned, the `Show` instance does seem to truncate (though still keeps at least one digit after the dot to distinguish from integers), so depending on what you’re doing you may be able to use that.

---

<div class="post-metadata">

**Author:** ![Chris\_Olson](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/chris_olson/32/1918_2.png) [@Chris\_Olson](https://forum.canton.network/u/Chris_Olson)\
**Post date:** [June 7, 2021, 1:20pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/17 "2021-06-07T13:20:20Z")

</div>

Thanks for all the wonderful feedback. Keep it coming. FYI we are integrating chapter links and transcript search into the videos. It will make the process you mention much better. We can also help enhance many of the suggestions that are coming in here!

---

<div class="post-metadata">

**Author:** ![quidagis](https://avatars.discourse-cdn.com/v4/letter/q/dbc845/32.png) [@quidagis](https://forum.canton.network/u/quidagis)\
**Post date:** [June 7, 2021, 8:45pm UTC](https://forum.canton.network/t/sneak-peek-of-new-daml-training-videos-for-daml-forum-members/2600/18 "2021-06-07T20:45:55Z")

</div>

Thank you for the comprehensive replies. I recall now that @cocreature had mentioned to me back in March, that Daml does not use Floats. I guess for Ledger operations and tests, displaying `Decimal 10` is acceptable.

I’ll move on from the format issue until I bump into something that needs a `:3f` type format in the future.
