Okay, oh my gosh, praise the Lord, this thing finally worked. Good gracious, I am a terrible, terrible streamer, but I finally got this thing working. YouTube UI is not, not my favorite. Let me see if this tweet went out.  Oh my gosh, now I need to take a nap. Well, thank you so much if you're here watching. Thank you for enduring the pain of me figuring out how to stream for the first time. I really do appreciate it. What we're doing today is kind of over the, at last week I had done a little bit of streaming around this little piece of UI. So at work we have this header and it's kind of inconsistent across our eight apps. And we had two people on our team make a spec for it, Angela and Travis. And what I did was I spent some time implementing this spec. I'm a little bit concerned that I forgot to fix it actually last week. So there's something wrong in here. So that'll be very exciting to figure out. And that's why it's not rendering. Let's see if I can save this again and see what happens. My favorite trick is to like use a prettier to see if I have any formatting issues. Anyway, before I get sidetracked on that, yeah, webpage is running slow. It's all right, we're gonna be moving all of that locally so we'll be able to find out what's going on there. So basically the goal for me today is to move what we worked on there, which is just the desktop implementation. We'll do mobile later into this repository. So this repository is where kind of a growing collection of assets for us for our front end. Oh, hey, look, I got some comments. Just saying hi, I can't say. Thanks, Wix, appreciate it. I said, thanks for stopping by. Thanks guys, love you. So yeah, so that's where we're at right here is we have this repository and the way that it works is it's set up like a mono repo using Lerna. And Lerna is just a way that you can have one repository that has a bunch of components inside of it and or a bunch of modules inside of it and then kind of distribute those all at once. You can version them independently, you can version them all together. It is used in projects like Babel, Jest, Meteor, Ember, Angular. Not sure why I read all those backwards but my dyslexia coming toward me. Yes, there's probably a syntax error. Yes, so hopefully I'll be able to figure that out. I actually quit the live stream last time because I was nervous I wasn't gonna be able to figure it out and my shame was like too deep but I'm feeling pretty confident today. So yeah, so this is how a planning center JavaScript is set up and we have a couple commands you can run, et cetera, et cetera. There aren't a lot of packages in here yet basically our shared top bar is in here and then we have just this URL generator which is, I'll just show you because we'll probably be copying some stuff from that. So it's a really simple file that basically just draws out URLs for each environment. So there's that. Yeah, so the goal today is that I would add an additional package in here for the starting point project that we have with the tabbed component headers and whatnot. So that's what we're gonna do. I'm basically just gonna copy that, put in the project and build everything up how I need it to be. Now here's the thing is that this was made awhile ago so I guess like more than nine months ago I put all this into play and I really haven't added anything since I've done some updates. So this will be kind of like a fresh eyes for me and part of the goal is to be able to document this better so that other people can contribute more easily to it, other people on our team. So before I start that, Sid's asking me questions. Do you take live questions? Don't want to distract you. Was using Lerna over yarn workspaces, a conscious choice or just the timing. So this actually does use yarn workspaces. So if I open up my, oh no, I need my package JSON file. Not the yarn.lock. Good gracious, the internet as I'm trying to stream and do all this stuff is not my friend. Okay, yeah, so that's a good question. So I did have it set up to, I mean at one point too, the intention was to use yarn workspaces and this is all kind of an area of exploration for me. I'm not too familiar with how everything works but basically I'm just using Lerna to publish. So I'm using yarn as the package manager and I'm using it to kind of resolve all of the packages and I'm trying to do better about actually moving all of the nested package is into like the shared route for yarn. But yeah, so that's a great question because I swear I set this up for yarn workspaces but apparently I didn't because I don't see any evidence of that in these things. There should be like a yarn file that kind of sets up the workspaces. Oh no, yeah, here it is. So workspaces, it's in my package JSON packages slash. So yeah, so I'm using yarn workspaces to resolve the dependencies in their shared dependencies but I'm using Lerna to kind of package and send it up to NPM. If there's another way to do that then I'd be interested to hear it honestly. Yeah, so let me kind of start working on this. Okay, so first things first, I'm in that directory. I have the project open here. And I guess I'll just start by making a new folder and kind of seeing where we go from there. So I'll add a folder not there in packages and this is gonna be, I never came up with a great name. Yeah, it's called tab header for now. Oh, Sid's saying that yarn workspaces now has a publishing thingy. Yeah, I've not used it yet. So I'm gonna have to, if you wouldn't mind linking that if there's any documentation for that, that'd be great because I'm actually having a problem with yarn at the moment where every time I upgrade a package and actually let me just open this up. If my computer will even let me navigate, let's see, is that it? There's like a open issue which is super frustrating. I don't know if I can tell just the ones that I'm, yeah, I can't seem to find it. Obviously there's a lot of issues with regard to versioning. But yeah, I have this issue right now and it seems to be kind of like sporadically, very sporadic for people who are using Lerna but an issue where every time I try, every time I make changes to one package and try to publish that, it actually thinks that I made changes to all of the packages which I definitely didn't and I have to publish a version of those too which is super frustrating. I thought that updating would help but even in the latest versions people are having this trouble where they're seeing the same thing and it's a very, I guess like kind of machine dependent which seems like super weird. I don't know. Anyway, this is what we have right now so that's kind of what I'm working with. Okay, so we're just gonna call this tabbed header that seems fine for right now and then we're gonna use this kind of URL thing as a boilerplate because it's the smallest one. Then we might need to kind of do that and react too. So I wanna look at this package.json file just to see how it's structured. This is typically where I would start trying to figure this out. So we have, the biggest things here is that we're using one of my favorite libraries, Microbundle, to actually bundle this up. It's by develop it and it's really an amazing piece of engineering if you make libraries at all. So zero config bundler for tiny modules and yeah, it's pretty simple. Basically you add these commands and it gives you a way to export an ESM, UMD and CJS file from a source file without a whole bunch of hubbub. The only challenge with it is that it doesn't do react out of the box so I'll probably have to borrow that configuration from again another component. So let's start with that. I'm just gonna copy this whole thing, wholesale and add it here. So we're gonna create a new file and package.json. Okay, and so then let's look at the things that we need to change. First, the project name is gonna change. This is gonna be planning center tabs header. And what this relates to is NPM, not the repository. So let me show you these projects on NPM right now. So this is our org scope and you can see that it's auto-populating some of these projects. So that's planning center top bar, planning center icons, planning center URL. These are independent on NPM but they're part of our mono repo for these components. So yeah, there's the documentation for that. So ultimately this would end up at planning center slash tabs header here. That's the package that we're eventually gonna get to. So that's the name here. I'm gonna start with just zeros.  Okay, now I'm gonna change these URLs where these files are going to live. I personally like to have them have the name of the thing that I'm looking for or that I'm creating. So, that didn't work. Tab header. Okay, now the source file is gonna be index.js. Perfect, this is the repository where this lives. So yeah, planning center slash JavaScript. Great, I'm the author. It's unlicensed at the moment. I'd love to be able to get those licensed even if just for education purposes like this. The files we wanna distribute are the index file and dist. ReadMe gets sent automatically. So I don't have to include that. And the commands are gonna be micro bundle and micro bundle watch. Yeah, we don't have tests yet. So I'm just gonna delete everything that we don't have yet. This I'm gonna keep because this is gonna be, every time we save this and, or every time we deploy this, we want this to build. Actually, no, that's for tests, pre-test, not pre-publish. So I'm gonna delete that too. We can pull that back in later. And then again, the URL for this, the homepage is gonna be packages tabbed header. Okay, cool, that is looking great. So since it's viewing the source file as index.js, let's figure that, let's create that file. Let's see. Okay, so what we're gonna do now, I'm curious if this works on, oh, sweet. So this is one of my favorite additions to VS Code. I think it's in preferences. And it is in features, I believe. I can't remember. NPM scripts. Yeah, I think this is it, but it basically gives you playability of these scripts in VS Code, which is really, really neat. So the package that we're looking for, not symbol, the symbol might be a good reference for us. It's a small package, but uses React. Okay, so the ones we're looking for are in tabbed heading. So we have build and dev, it's picking up both of those. So let's run dev and see what happens. Hit that play button. All right, so it tries to build that. Let's see why it's failing. Microbundle command not found. So what we need to do is we need to install those. Oh, not there. Oh, hey Max, what's up? Oh, sorry, yeah.   It was just like an empty page for like 15 minutes.  So that was fun. Anyway, yeah, I'll hit me up tomorrow. So yeah, so we got this, so I'll hit yarn now and see what we got. Anything that has to do with the internet right now is just like crushingly slow. I wish I had jokes or something, but I don't have any jokes. Now, if this is doing its job right, it should be kind of like building up everything and then kind of using the shared versions of things that I'm using in my workspaces, in yarn workspaces to, so Microbundle, let's see, let's open up package. So like Microbundle isn't installed here, but it should be pulling it from my yarn workspaces at the root. So I think, let's see, where's the root package JSON? Yeah, so we have Microbundle here. So ideally, that's what it's doing. So it should have linked all those up now and let's see if we can run that command. So what was it, it was yarn build. Okay, so it's running the Microbundle command. Cool. Now, so what we can see here is just like that it used our definitions in our package JSON to say what the main UMD and module versions are and it put them in this folder called dist. It has all those files. So obviously this is not the implementation that we have yet, but just to make sure that everything's hooked up correctly, it has our source maps and then it has versions for all of those. Now, one thing that I wanted to check out real quick is that I know that sometimes the best practices change from month to month as to how those should be named. So how those files should be named. So I'd like to check that out and how they're referenced, obviously in the package JSON. So usually what I do is I just go to the package for develop it Microbundle and kind of look at what they're doing. So that would be here. Okay, so the package JSON should look like it should have a main, which is going to be the dist regular JS file, the UMD main, which is the UMD build of it with the UMD suffix, perfect. A module. So this changes to MJS. Glad that I checked this. And then the source file, that can be any source file, it can live wherever. We will likely have to change this in order to get kind of JSX support. Awesome, see you later Sid. And yeah, so have a good night's sleep. Okay, cool. So since we did that, I'm going to, yeah, so we're good. Now that we changed that to MJS instead. So let's save this. I'm going to delete this whole thing and build it again. I'll see if I can use this now now that we've yarned up. No, it doesn't like that. It's all good. Cool, call in Microbundle and should give us three new files. Again, this one with the now.MJS extension. Yep, cool, awesome. So that is good. That's good to go. Actually, at this point, to add tab header, I'm going to check out a new branch. I'm going to start committing right away. Okay, cool. So that now is at least set up. This is perfect. I'm going to hide this since that doesn't seem to be working at the moment. So the next thing is I am going to, I'm going to need to get react working. I know that I need react. So I'm just going to import react and see what we get here. I don't want to do too much just yet. Trying to think of what the best way to test this is going to be. So export defaults. Okay, let's do that. Let's see how that works. Oops, already commended. I'm expecting that it's going to give me an error saying that it doesn't, like just a syntax error, not understanding this syntax because I've had that problem with other packages. Oh, wow. No, we're at fancy. Looks like maybe they got that sorted out. Cool. Oh, you know what? It's not with JSX. I remember now. This was something else. So there's a couple of things that we need to, what is it? Okay, so I want to look at the output here because I think that they're react stuff. Yeah, so they default to hyperscript, which is fine. We just have to configure it. We just have to configure it differently. So let me see if I try, if I solve that problem with micro bundle here. So this is another project. This is symbol and I have everything set up correctly. Now the way that I'm doing it in this package is a little bit older. I'm kind of like doing the whole babble thing, which is a little bit aggressive, but basically I have a build script, which is going to run babble and then run micro bundle from the output. So it does like kind of like an intermediate thing. I do that to get syntactic things that micro bundle up to this point has not supported like, spread, or REST spread props or whatever, you know what I'm saying, like the REST spread syntax. So it's very possible we'll need to go that far to get support. Let me see how should I kept that micro bundle page open? And I need like four computers to do the tasks that I'm doing right now. Let's close this, see if that buys us anything. Okay, so I know that there's an issue here. Maybe we should just search for it. Micro bundle. Oh, okay, here's. So there is an option option on micro bundle to change the pragma. There we go, dash dash JSX. Okay, and it defaults to hyperscript. Perfect, so I think we can just add that into each of our calls if we want. Never too confident whether that's supposed to go before or after just kind of like chipping away at this one issue at a time. So the goal from this is that I should be able to open up those exported files and see that now it is not using the h function, the hyperscript function, but now it should be using react create element to be rendering out those elements or returning that call instead of h. Okay, let's see if we got it. That's the source map. Cool, yeah, so it's a return zero. So that's gonna be using the module that it imported. So I think that's right. At least I hope it's right. Okay, okay, okay, okay, hey, let's see. Actually, let's look at the UMD that might make it a little bit clearer. Cool, that looks right to me. Okay, cool. Since that's the case, now we can kind of start okey dokey. Don't need either of those. Let's kill that. Maybe that's one that's stealing resources from me, except I need it open. You know, man, I don't know what I did to my computer this morning, but I really do apologize. It is just raging pissed at us today. I just need to get in here long enough to steal my code. Perfect. Ah, that's not the right one. Please. Oh my gosh, there we go, finally. That was trying, that was trying, folks. Okay, so what I'm gonna do is I know that this module at one point worked. So first I wanna build it and see if we get any errors and see if those direct us to kind of problems that we had. Okay, so we do have something. Can't read property type, okay? I honestly don't know what that means. Type of undefined, okay, let's see. So we're exporting all of these. Let's, this is how I debug. Okay, cool. So when we export nothing, we're fine. Okay, good to know. Oh, this might have something to do with it. This tabs container, tabs container. That's not gonna work. It's probably why our code wasn't working before. Okay, cool. So we got one component out of it. Guessing that's what broke it before. Let's see if that, yeah, cool. Let's just go one by one until something breaks. So we'll make that one available. Awesome. And we are getting some warnings. We can deal with that later. Okay, so this is one that it's pissed at. So re, okay, so page title. It's throwing a fit at. Okay, let's skip over page title. I'm guessing it has to do with the, so none of these are taking props in this way. And I think that's where that kind of tricky bit where we're gonna have to run everything through Babel comes into play. So let's do the ones that don't do that fancieness with props first. And we can solve that problem in isolation. Let's just test that theory. So this is one that doesn't have, or that does that, that rest props. And yes, we're getting that type error. So let's solve that. I updated my operating system.  So I'm like just jamming on these keys like a noob. Okay, so let's add our progress. Okay, next thing. So now we actually need to, we're officially at a point where we need to kind of do something a little bit more advanced with Babel. So I'm gonna jump in there. Like I said, I know that Cymbal is doing that. So let's take a look at how Cymbal is set up in the package JSON. So Cymbal is set up like this. For the source, instead of just using that straight index file, we have, we have source, Cymbal.js. So that's what we have right here. And then again, we're running this, this additional processing on top of it. And then, I mean, this isn't great, but it's the way that I have it set up. It's the way I'm comfortable with. I'm sure there are better ways to do this, but I make this intermediate version of it that is Babel processed. And then I run micro bundle on that. So that's how this is set up. I'd like to copy that. I don't wanna reinvent the wheel from scratch. I just need to get this done. So what we're gonna do, let's copy those, go into our other package JSON here. Okay. So we have this Babel script that's going to look roughly the same. Build is gonna look a little bit different. Let's see. And yeah, so pre-published just builds it. I guess let's leave that, let's leave that in there for now. So build, so we're gonna take this out, but we are gonna have that micro bundle JSX at the end there. Might not be necessary because we're already getting a processed version of that.  Okay, I'm gonna build this and see what happens. I think that we're gonna be missing a bunch of stuff in configuration and whatever. Source doesn't exist, perfect. I know how to solve that. So we'll add a source directory. We'll add a new file called tabbedheader.js. And we're gonna basically copy everything that is in our index file now. Put that there. We can safely delete this because nothing is referencing that. And let's try to build it again now that that's gone. Okay, so we got a parsing error, which is great, unexpected token. Perfect, this is where we wanna be. So how do we solve that? Let's go back to symbol. Okay, so we have a lot of Babel requirements. So I think that what we need to do is we need to just add our Babel config. Okay, so those are all of our Babel presets. Now it's probably gonna bark at us because it doesn't have some of those libraries. Cool, successfully compiled one file with Babel. It doesn't look like it's running micro bundle. We can check that by deleting this. Yeah, definitely is not. So let's see what we got wrong. So scripts we have build. This one doesn't have a dev. That shouldn't matter because we're not using it right now. We need to re-yarn. Okay, so we are getting our temp file written. So that's a good start. Ah, I think I know what's going on. We need to change our source to temp instead of index here. So it's gonna be tabbed here. So just for recap, we're running npm run Babel.  That's gonna run this script which basically just runs Babel on the source directory and then puts everything, anything that's in source it's gonna process and put it in temp. Then what we need to do in order to run this second part of this command. So if this is successful it's then going to run the second part of this command which is micro bundle which is going to look at the source file and then process all of these. So it's a little bit of a headache, but it's all there. So I just need to change the source file. So now it's looking in this temporary directory for the Babel processed stuff. So let's run yarn build again. Cool, so now we have built out our disk directory with all of those files. Let's look at the UMD again. Okay, search for each parent. Okay, cool, so we don't have any of that. So, okay, so we are using create element, perfect. All of this is working swimmingly. So let's see now if we can export one of these ones with this extra little sugar for REST parameters. Oh my gosh, look at that. Amazing. So we'll do this again, just one at a time. Not in a rush, happy to take it slow just make sure everything works not trying to do too many things at once and then get confused and not be able to debug where I was at. I know I'm the weak link in this process, that's fine. Okay, getting there, I think this is the last one. Okay, cool, let's see, what do we do? Okay, cool, cool, all right, that is good. So one thing that I want to do, I don't like the fact that this disk directory is now committed into my project. Now I want those on NPM but I really don't care about having them on Git, it's just kind of confusing to have like a bunch of distribution files. So I need to have a way where I can ignore them in Git but then publish them to NPM. So now part of that is already solved for me because I'm saying very explicitly I want to publish, whoops, in my package JSON, everything I have I want to publish the dist, everything that exists there. But I need to do a little bit of extra fanciness and you can see I've done this in the other packages is I want to ignore these dist and temp, sorry. Vivek, sorry to lose you but yeah, just check in tomorrow. Feel free to hit me up with any questions on Twitter. Just hit me up at chantastic and I'd be happy to answer those then. Thanks for sticking with us this far. Yeah, so let's see, so what do I need to do? Package JSON, okay, so I'm going to do a new file and this is going to be the git ignore and that's where I'm going to, actually I'm going to copy this whole git ignore because there's a lot of stuff in here that I got just by magic of setting up this repo in on GitHub. There's a lot of stuff that I would love to be able to not have in here. Okay, cool, so that's going to ignore that on the git side and I'm going to have to delete those files because they're already being tracked in git. Now what I need to do is I need to not ignore them on the npm side, so I can, there's an npm ignore. Now I'm already forcing that file but I can be super explicit here, so and then we'll do, whoops, not there. Git.npm ignore, whoops, man, I'm so bad at this. Every time I stream I learn something about my process that is just so offensive, not only to you I'm sure but to me that I haven't like streamlined it and made it better, so thank you, you're making me a better person. Okay, npm ignore, we're going to copy I always say, we're just going to say not dist, so we don't want to ignore dist when we're publishing the npm. Cool, we're going to add that, we're going to git, actually we're just going to remove those, so remove dist. Okay, cool, and then I'm going to commit that deletion so we're removing that from the repository and then we're just going to have to make sure that before we deploy we rebuild those assets so they're on, ignored on my local machine so the files are still there or at least ignored as far as Git's concerned. Okay, cool, so let's see, what's the next step from here? Let me again investigate this, so I already have that pre-published task so I was going to run npm build before publish so that should be good to go. Let's see, private is set to false so this should just work for us. Let's see what we get. So I'm going to say, I'm going to go back to my documentation here because it has been a while. See, I'm going to say Yarn, Learner, LS, that should tell me all the projects. Oh, okay, so that tells me all of that command, Learner, LS tells me all of the projects that are in here. I can see that tabbed header is now being recognized as a project being managed by Learner. Perfect, Yarn, Learner, diff, is it? Yeah, so that's not the one that I want. I want to do update it, I think. Okay, so this is the problem that I'm having that I told you about earlier where it is saying that all of these projects have changed even though it's just one and it's an open issue on Learner. So I don't actually know what the solution to this is. So you're going to see me do something really dirty, which is basically just increment the pre-released version of all of these. I know it breaks my heart too, but you know, you got to ship it. So let's look at the command. Learner publish, and I'm not aware of a way to just publish the one package besides kind of like going in there and opting out of all of the kind of tags that you get through Learner by default and just npm publishing that package. So I don't know, if you want to help me, I'm more than happy to accept help on this. So let's see, Learner, Learner publish. So this is going to ask me for all of the versions for everything. Oh, if it works. I think it might be pissed that I have set this to zero. So let me give it a pre-release version number. Okay, let's see if that works. No, I might be SOL today on actually publishing this, unfortunately. Biggest arguments, maybe pissed about that. Get commit, super disappointed right now. Oh, I need to put this on GitHub, I think. Yep, I forgot that I'm on a branch, that's why. All right, so let's merge this in. Okay, G merge minus. We don't have a read me, so that's going to be kind of a bummer as we go through this, but let me push this up. Now let's try this again. If this doesn't work, I have no idea. I'm going to struggle on my own and probably cut this stream because we're at about an hour anyway. If it works, it should ask me for all the versions that I want to publish of all of the different things. Oh, hey, look, progress, progress. Let's see, so again, this is that bug thing, so I'm just gonna, as you can see, I got a pretty big pre-release number on all of these, which is just embarrassing. I should have never started this live stream and admitted my shame to you. Oh, let's see. And now they don't even support those version, the same kind of version numbers anymore. So let's do this. Let's just take whatever they're gonna give me. No, I'm gonna have to put all these numbers in by hand. Zero dot zero, zero, custom. Gosh, this is so infuriating. I feel angry for you having to watch me right now. Again, part of this is research, just for me to be able to get a better process around this stuff and figure out what I am doing wrong. So four dash four, so that's for symbol. Tab debtor, so this is the new one. So we're just gonna say pre-major. Yeah, so this is gonna be a 1.0 at some point, we're just gonna call it pre-major. Maybe I'll regret that, but who cares? URL, custom pre-release. Oh gosh, infuriating. Two dash four, cool. So it's gonna give me a rundown of all of the things that I am publishing. That looks fine to me.  Yes. I really hope that these go out because it'll be really disappointing if they don't. Failed, bummer. Pushing tags, publishing packages to NPM. You must be logged in. It's gonna make me do all that again. I am sure of it. I'm gonna do this on another screen. So you don't see my podcast words. Hey, you know me. Oh, pin, that's probably a bad thing, right? Okay, you know, at this point, I'm determined. It's gonna ask me for all those versions again. Okay, cool. I'm pretty sure that those did not go out. I think that failed and I don't know, I don't know how to read, like retry the previous publish. I don't know if it's possible. You're learning today that I know very little about the tools that I'm using. So that's simple. Was it tabbed header? Yeah, so that did not publish. I'm gonna go through that whole process again. Man, oh man. I think maybe this, we're not gonna have the satisfaction today of actually having made this work, which is a real bummer. But yeah, so I will see verify registry authentication. See, this is, I should have done that because then it would have told me, it would have failed more gracefully than just saying like everything's good. You know, let's just do this. What was it? Package, okay, tabbed header, package JSON. So that's gonna be this one. Let's change this to alpha one. Let's just do that. Oh, okay, I'll do it from the terminal.  Wow, it really freaked out over that last version. Yeah, let's just call this, call this alpha. This is gonna be, let's call this a pre-patch. Man, I'm just really screwing myself for the future. Okay, so pre-major, sorry, I'm sorry, I'm sorry. I hope that everyone has dropped off at this time at this point. Let's see, pre-alpha two, I like it. D, this is gonna be a pre-patch. Good, man, I really screwed up this version numbers. Cool, yes, I'm doing this all for you.  I'm gonna increment all these to major versions if I have to.  Well, I'm really sorry, that's super dissatisfying. I'm really sorry if you stuck around to see the payoff. I guess you just have to check back in to see that. So very sorry, I promise that I will reserve that for video and not just try to fix it on my own. Thank you for watching, I hope you learned something in review, what we did was we kind of add a new project to our monorepo, we copied a lot of settings to be able to do that, and basically the biggest things was we needed to, everything worked great out of the box, except we needed to change the hyperscript to JSX in that config, and also to be able to parse the rest parameters we had to kind of do that whole thing with the temp directory to process out Babel, which is crazy, you saw firsthand that I have a little bit of a cluster on my hands in terms of the versioning of these packages managed by Lerna, open issue, really kind of a bummer, and then I failed because of credentials. Now I know that there's some problems with two factor auth with yarn, I know that it doesn't, at least as far as I know, support two factor auth, so that could be a problem too. There are a lot of open questions, so next time we'll dive into those, thanks for watching, subscribe if you want more videos like this or to know when I'm making some live streams. Yeah, awesome, thanks for tuning in.


Well this is the VCNL 4020 which is a proximity and light sensor and this is one of the sensors that I had chat gpt write a driver for me with my assistance and you know I had it write all the functions I checked them I verified all the you know pound defines and the code that was written and then this is the Arduino sketch I asked it to write to plot proximity data so if you back up a little bit you can see as I move my hand up and down yeah when we do any type of driver we we check it anyways yeah so you know the trolls online are like yeah just you know it's not gonna work or anything it's well we look yeah we we review everything anyways yeah so this is the library and I post the link to the chat where I do the coding together the only ones that are gonna probably end up doing that so whatever whatever we do with AI we're gonna post the complete logs all right so this is done and it's gonna be needed for chop soon yes make robot friend all related was this this is a demo for my INA 3 2 2 1 this is a triple DC voltage and current sensor it's kind of cool chip people who know the INA 2 1 9 which we love using or the analog version the INA 169 this is like the INA 2 1 9 but it does three channels why there's three terminal blocks and here I've just wired them all up to you know VN 5 volts and ground and this is one of the drivers that you know again I had written by chat GPT together so you know it was a team effort I kind of told chat GPT for what I wanted to write and then it went through and wrote all the functions for me and the enums and defines and there are a couple of typos like it's not perfect but I cleaned up the library even the documentation for me which I love you know doc she comes based on your code that's already out there so and I uploaded the data sheet so it was using the data sheet to I determine the flag for example like here it actually didn't catch all the flags but it paced the table for it and be like hey you you missed you know the second part of the table or so we do a QA and we check it and you know yeah it makes mistakes just like just like I do you know us and working by prompts so like my initial prompt now is much longer because I give it like a lot more context and I say like hey you know by the way like I don't need you to like do a flowery description of all the process just give me the code and so I got it actually got a little faster although it did still kind of like to give me some description and text but less than me used to so that was kind of nice this was very fast and easy and I kind of did it in between taking care of the baby and stuff today so I'm gonna keep testing all the functions but so far so good this is a good partnership me and a friendly robot early due to what is this that's no moon that's a round tft display hooked up to an ESP 32 s3 we will room here this is rev b of my experimenter board as you can see I fixed up all the traces so I'm only using traces we can use and I've added a GPIO expander here and one thing I'm testing right now is this is a Wi-Fi chip it can do Wi-Fi and RGB display so I'm using some code that paint your dragon wrote on my screen that connects to a geolocation service here that will look at my IP address and give me my latitude and longitude so I'll have to like enter it in my hand and then it checks out this API that will give me the moon phase what I love about Python is you put in the URL and then you just get the JSON you know traverse the JSON XPath and boom you get the phase and then the next step is I'm going to generate 30 phase images so that the moon phase showed on the display matches the correct moon phase for my location right now I'm just faking it but you know it's really nice about circuit Python is that you know on the disk drive itself I just have this image and it's like ready to go and I don't have to like play with little FS or any weird compression it's just a bitmap I might try having it display JPEG images so I can fit all them on the internal memory but I could also easily wire up an SD card using the extra pins down here yeah there's extra pins and that's the moon really data what is this this is an HUSB 238 breakup or this is an interesting chip here it can either set the power delivery voltage from USB C using jumpers for current and voltage over here or I can do it over I squared C so I've written a little driver that's running on the Metro Mini and what it's doing is it's iterating on every voltage available so 12 volts 15 volts 20 volts and then back down to 5 volts and on the other side of the USB C cable is this you know nice power adapter and this is the one that can provide 5 9 12 15 and 20 so on the computer I've got a little driver that I wrote and testing out each voltage and it can communicate and see like what are available and how much current is available this driver is working really well and this is really nice because not only can you use jumpers if you want to like hard-code it but if you want to dynamically change the voltages you can use this Arduino driver so coming to the Adafruit shop soon


Hello and welcome to the session. This is Professor Farhad. In this session, I will look at a summary, basically a conclusion of the various audit opinion that we cover in this playlist. This topic is covered in auditing and attestation course, the CPA exam auditing section. As always, I would like to remind you to connect with me on LinkedIn if you haven't done so. YouTube is where you would need to subscribe. I have 1600 plus accounting, auditing, tax and finance lectures. This is a list of all the courses that I cover, including CPA questions. If you like my lectures, please like them. Click on the like button. It doesn't cost you anything. Share them. Put them in playlist. If they benefit you, it means they might benefit other people. So share the wealth and please connect with me on Instagram. If you are looking to supplement your education, please check out my website, farhadlectures.com for additional resources, especially if you're studying for your CPA exam. It's a 30 year investment in your career. Take it serious. The first thing we're going to look at is the four types of audit opinion, which are unmodified, you know, or unqualified depending whether you're using the AICP or the PCAOB language or clean opinion. And with this opinion, we have a sub opinion of it. It's called still unmodified with explanatory paragraph. Simply put, it's unmodified opinion. That's the first opinion. Then we have a qualified opinion. Then we have adverse opinion. Then we have disclaimer. Notice the adverse and the disclaimer are in red to reflect that they are no good. Now, why do we use adverse versus disclaimer? We're going to see later that adverse is when you have a gap issue. And we're going to explain this much, much more in detail in the explanation session. And disclaimer is a gas issue. So now, so again, all these opinion I went over in detail in separate session. Check out the playlist for this, for this session. What are the conditions for a clean, unmodified or unqualified opinion? We need four conditions for this. One is include all the financial statements. Two, we have to have sufficient appropriate evidence. So the financial statements are all there. We have sufficient appropriate evidence. The financial statements present fairly with gap or the framework that we are using. And four, no circumstances requiring the additional emphasis of a matter or paragraph. So this is the cleanest kind of clean cut, nothing to worry about. Now, again, with unmodified or unqualified, we have unmodified opinion with explanatory paragraph. We are still unmodified. The only thing here we are pointing out to something else. We want to, we want the users to know about something else. What that could be something else? It could be lack of consistency in the application of gap, but we agree, but lack of consistency. We have to show it. Auditor agree with the departure from the accounting principle. There's a departure, but we still agree. Substantial doubt about going concern. We have a, there's a going concern issue, emphasis of other matters and reports involving other auditors. And here we use revised wording. Now these topics, I covered them much, much more in details, each one of them. I'm just giving you a summary of all the audit opinions. So if you want to know about this, about these explanatory paragraph, please see the recording. I'll put the playlist. I'll put the link for the playlist in the description. Now, now what happened if we don't give unmodified opinion? If we don't give unmodified opinion, now we have to look at what other opinion can we give because unmodified is not justified. Here we're going to have three circumstances. We could have a departure from gap. Financial statements are not prepared according to gap and the auditor disagree. Because remember here, in one of the paragraph, there's lack, there's auditor agree to a departure from the accounting principle. Here we don't agree. So we call this a gap issue. We could have scope restriction either by the client or other circumstances. And if it's by the client, it could be a major issue. This is a gas generally accepted. All the things standard issue and the auditor may not be independent. It's not independent. This is also a gas issue. So we could have three issues when we don't give unmodified or clean opinion. Now, when that's the case, what opinion do we give? Well, then we have to look at the materiality of the issue. If the issue could be material, so the gap issue could be material but not pervasive to the statement as a whole, or the issue could be material and pervasive to the whole financial statements. So the next thing we look at is the level of materiality and pervasiveness. Now, if it's not material, we don't have to worry about it, obviously. We only have to worry if it's material and if it's material, is it pervasive, pervasive or not? Pervasive or not? So if we have a gap issue, simply put, we're not following gap and it's not pervasive, easy.  So basically we say the opinion except for this issue, it's good. And we looked at this opinion much, much more in detail in a separate recording. Also the scope, if there's a scope or restriction by decline, but the issue is material but not pervasive, it's a specific area and the financial statements, then we give a qualified opinion. So that's easy. So qualified when it's material but not pervasive. Now, if the issue is gap, it's material and pervasive, then we give an adverse opinion. If it's material and pervasive, if it's a gas issue, material and pervasive, we give a disclaimer.  Now we are left with auditor is not independent. It's a gas issue. Whether it's material or not material, here we disclaim, whether it's material or not. Whether it's material or not. Materiality is not an issue here. If you are not independent, if you are not independent, you disclaim. You disclaim. So those are the opinion and when we use them, this is a summary. Hopefully it will be very helpful if you're studying for the CPA exam. As always, if you like my recording, please like them, share them, put them in playlist, subscribe. And if you're studying for your CPA exam, I strongly suggest you check out my website for additional resources. Good luck and study hard and stay safe.


Hello, it's another edition of Plus Reports, a completion of the stories and events that made the news recently. Welcome, I'm Jacinta Obuco. We are starting off this week's edition on rail translation in Lagos. The 2022 deadline set for the completion of the Lagos rail mass transit LRMT projects remains achievable. By 2023, Nigerians will enjoy the benefits of rail infrastructure that is being developed in Lagos State. Governor Babaji Desawolu gave this assurance while addressing journalists. Plus, TV Africa's Lagos State Government House correspondent, Love Kukui Edokun, has more. Lagos State's Governor Babaji Desawolu and other government functionaries inspecting the rail projects, the blue and red lines. The construction of the project began over 10 years ago by the former administration of Babatunde Vashula. Vigabna explained that a blue line was designed to run from Okokomiko on the Lagos Badagri Expressway through an elevated line crossing the Igomu Lagoon to Marina on Lagos Airlines. Iconic station, which is like a midpoint on the red line, it can just still have further to the north, it still have Agege, Abadu, Igidwishaga and all of it. And on the southern part, it still has OSUD, Moshin, Uinbo, I mean, Evitimeta and all of that. When the inspection was over, the governor assured that commercial operations will be flagged up in the first quarter of 2023. We're still on track with last quarter 2022 by the grace of God. Vigabna also highlighted the features of the Ikeja and Marina stations, which are the meeting points of the red and blue rail line projects. At Ikeja, we saw the station and we also saw the construction of the overpass. The overpass is to ensure that vehicular movements can move over and above, you know, the train that we're going underneath, right, and we saw that work as commenced extensively. There are few issues, which is why you saw the small part, where you have a generator which will button approval with a motor and that will be removed in the next one. The Lagos state government has repeatedly postponed the completion date of the blue line. But Governor Saoulu has assured Legosians once again that the project will be commissioned before he leaves office. From Legos, Love Ikuku Uiedukum reporting for PLAS TV, Africa. Legosians are hopeful that a 2023 date fixed by the current administration will become a reality. The Nigerian Maritime Administration Safety Agency has flagged off the first phase of the national rec removal exercise that began the process of reading Nigerian waters of over 3,000 identified recs and derelicts. It was organized by Nigerian Maritime Administration and Safety Agency, Nigerian Port Authority, NPA, and other stakeholders in the Maritime industry. PLAS TV, Africa's correspondent, Destiny Momo, was there and now reports. Official flag off of the removal of recs from the Nigerian waters and stationed now at the Tinkan Island, Fort around Lady Town, the rec has been removed from the water as you can see. Officiated by the Minister of Transport and the DJ of the Masa did not fail to let us know that this is a two-year or more than two-year contract. This flag off of the removal of recs from Nigeria's waterways, dignitaries, stakeholders and all attendees at the Badagri Creek enjoyed the beautiful view of waters as boats conducted drop-offs organized by NIMASA. Minister of Transport Rotimiamechi believes that don't Nigeria's maritime industry has been silent for over 27 years. Much can be achieved regarding maritime safety with all hands on deck. A broader picture of the Nigerian water, so that we make sure that the state's navigation is nothing but bigger than that. Bashir Jamu, Director General of NIMASA, recalls the history of rec havoc in maritime security and highlights the safety this development will bring. For someone in the political and financial will needed to march the demand of the moment to begin clearing the recs. The approval by the Federal Executive Council is a testimonial to the commitment of the President Buharis administration to deliver on its reports transportation promise to Nigerians. Stakeholders from the maritime industry offer valid solution and also to convert recs from sea to wealth. NIMASA should recognize critical recs and start with them. These are recs that are most likely to get into the channels as soon as possible. Getting new ships and getting this industry to meet with what is going on in the world. We cut into pieces and we send it to our smelting plant where we convert into construction rods, reinforcement rods, what you call. The rec removal experts show us how to remove this recs that threaten the safety and security of our Gulf of Guinea. This exercise will be conducted in four phases which is Badagri-Tinkan island access, western zone area, eastern zone, central zone which will in turn happen throughout the country. Destined moment for Plus TV Africa. NIMASA is charged with the responsibility of ensuring safety and security at sea. Aspectedly the exercise will open up the maritime industry to huge investment opportunities. In commemoration of the World Cleanup Day a group of volunteers and enthusiasts have taken the campaign of beach cleaning to Lafayage with a call to residents to preserve the environment. This report highlights the challenges faced as the society tackling the issues of packaging and plastic waste. The idea is moving from beach clean up to a circular economy where people pick deer plastics and recycle them, upcycle them and convert them to help deer livelihoods. Justin Akadounye has more. It is not a rare sight to go to a beach these days to only find plastics thrown about everywhere. What is worse is to see such a situation and not be faced by it all. Excitedly these volunteers have converged on Lafayage with the intent of saving the environment in keeping with the sustainable development goals. Children and adults speak about their drive. Cleaning the beach is an interesting thing to do it makes the society clean. People just come here and then they enjoy themselves and they leave mess around so someone has to take the responsibility to to clean up the mess. This is the natural state and we should leave it just the way we met it. Sincerely I think I think there needs to be a cultural shift in the country. You have for many people a scenario where as long as the immediate environment is clean they are fine. You have people throwing trash out of their cars, people throwing trash out of their houses onto the streets. In school we have learned about the SCG goals and I've raised awareness in school about it to my advocates and students. So when coming here I remind myself about it and we always talk about leaving a legacy behind and I feel coming to this community and still bringing all of these different cultures and ages grouped together we leave a legacy behind for the community. During the third Saturday in September international coastal cleanup they encourage people to read beaches of garbage. Awareness is also spread about preserving and protecting the world's oceans and waterways.  We're joining over 50 million people in over 180 countries across the globe and please don't throw plastic away from your moving cars the water will not just take it away it goes back into the ocean and based on statistics there will be more plastic than fishing the ocean by 2050. The beach is a nice place to come to relax reflect and do a lot of things and people have their phone and parties but please always clean up after you. We found out that our approach to proper waste management is very very appalling and then we need to do more of these to encourage people to begin to sort their waste as source. Marine Debra is one of the greatest threats to oceans around but luckily it is an issue with which we all can play a part in the solution Justin Acadone for Plasti B Africa. Cleaning the beach improves the coastal and ocean ecosystem waste pollution is a serious issue in Lagos and it's up to residents to minimize waste generated. The wife of Lagos state governor Ibi Jokes Songulu has charged youths to be patients disciplined and be a burst of happiness in their localities in order to make Nigeria great she gave the charge while speaking at a one-day youth sensitization program with the theme youths and moral values in an evolving society challenges and recommendation love the cuckoo and also captured this these are the youths of Nigeria these are the 143 youths groups represented here at the one-day sensitization program the program is aimed at sensitizing them on the need to inculcate moral values that's by the challenges in Nigeria while welcoming the youth selected from both the formal and informal sector Dr Ibi Jokes Songulu and joined them to be focused we know this is the z generation quite a number of the youths rely on the social media for information but then we also want to encourage you to please keep our breath with what is happening in your country in your state in your locality and be on top of it in his brief remarks legal state deputy governor Obafemi Hamzat told the youths frankly that there was no short cuts to success but advised them to be solution providers so there can be reasons to complain the question is what are we bringing to the table people complain around the world around even the best country in the world you can see what is happening in america they are fighting everything vaccine no vaccine so the question is what do we want to do as a people but as expository and educated the program might seem the youths like oliver truist expected more truly believe that knowledge is indeed the wealth of the nation that we must actually show it in everything that we do we must try to encourage today's nigerian youth to walk get educated and after acquiring that education get a good job gav nobobajide someone who charged the youths to take advantage of various opportunities that are bound in the state disclosed that the legal state government employment trust fund has given soft loans to over 40 startups some people they've given them grants directly some people they've given them businesses you know development write-ups so that they can indeed develop their business to full future they are under the canopy there the governor assured that the state will continue to create enabling environment for youths in governance from leagas love gupu ueyuduke reporting for plus tv africa we will now go on short break and we'll be right back for more please stay with us


Okay, welcome to the webinar. I'm Natasha Simons and I'm from the Australian National Data Service and I'm based in Brisbane and I'm here at QUT with QUT's very own Paula Callan who's the scholarly communications librarian here. So first of all communication during the webinar. During the webinar your microphones will be muted during the presentation to minimize noise and if you have a question please type it into the question box and then we'll have a look at questions at the end of both of the presentations. Also this webinar is being recorded and we'll email you when the recording is available from the ANS YouTube channel and if you'd like to tweet during the webinar please feel free to use that hashtag which is hashtag ANS data in your tweets. ANS is a federally funded organization that's working to transform Australia's research data environment. To make Australian research data collections more valuable by managing, connecting, enabling discovery and supporting their reuse of data. So if you haven't seen it before please take a look at the ANS flagship service which is Research Data Australia. RDA is an online service that's designed to provide connections between research data projects researchers and institutions and promote the visibility of Australia's research data collections in search engines. So many of you will know about ANS and Research Data Australia however some some won't and it's being mentioned here because it will be referred to during the course of today's webinar. This webinar is jointly sponsored by ANS and the Council of Australian University librarians or CALL and it's the first of a series of jointly sponsored ANS CALL webinars to explore issues of common interest. So today's topic is joining the dots, connecting publications, grants, data and other scholarly outputs. A more connected and integrated scholarly record facilitates discovery of research, provides a more complete view of research activities and assists the transparency and reproducibility of research. So in this webinar we have two speakers Paula Callan will discuss the guide to tagging institutional repository records related to ARC and HMRC grants which outline strategies to link research publications with grants and then Monica Omaday from ANS will be discussing the linking of publications and grants with research data and other scholarly outputs. So without further ado I'll hand over to Paula. For those of you who don't know me I'm the Scholarly Communications Librarian at QUT and I've been in this role since 2003 although it did have various titles along the way. I have oversight over QUT's Open Access Publications Repository QTE Prince and also a Scholarly Communications Librarian. It's my role to help researchers with a variety of issues related to their publishing and of course included in that is complying with the ARC and NHMRC Open Access mandates. In this presentation I'm going to look at very briefly the nuts and bolts of the ARC and NHMRC policies on open access and then discuss the implications for researchers and institutions and then I'll look at a couple of guides to tagging grant related records including the call guide that I was involved in putting together. Over a year ago now so probably some things have changed slightly so I was really pleased to see that Trove the National Library people have actually put together a guide to the technical side of tagging the grant related publications in our repository so that they can be harvested effectively by the National Library and then they've asked me to talk briefly about some of the grant publications, should I say, Fundamentated Publications issues that came up at Open Repositories a couple of weeks ago in Helsinki and I was there so I'll mention a couple of issues from that. Starting with the ARC and NHMRC policies, looking at the rationale for both policies it's basically it aligns with the government's stated reason for investing in research in the first place and that is to support its role in improving the well-being of our society and to do that they realize that they need to disseminate the research results to the wider community so it's not just a conversation happening between researchers it needs to get out there to the wider community and researchers who are outside of the loop. In a nutshell the policy is that the publication details, so that's the metadata, must be submitted to the institutional repository as soon as possible after the paper has been accepted for publication and the manuscript must be submitted to the repository as soon as possible after the publication date. An open access version of the paper must be available within 12 months of the publication date or as soon as possible after that date and if an open access copy will never be available then this information must be provided in the final report so they must provide an explanation for why it was not possible. And there are slight differences of course between the ARC and NHMRC policies so the ARC policy applies to grants that were awarded after the first of January 2013 but it applies to all publication types so not just journal articles. Whereas the NHMRC policy applies just to journal publications but it applies to all journal publications published after the first of July 2012 regardless of the start date of the grant. Now when we look at who's responsible it says it's a chief investigator who is responsible for providing the metadata and the manuscript to the institutional repository. So it's not our responsibility to go and get it they should be providing it. But it is the administering institution that's responsible for compliance so it's our responsibility for facilitating that perhaps reminding them and helping them with it but we have to make sure that they understand that they have to share this responsibility so the researchers. Now I was looking at the timing of deposit or the information about the timing of deposit on the NHMRC website because the wording in the policy infers that the metadata should be deposited in the repository on acceptance but in fact when we look at the guide for authors on the NHMRC website there is a little bit of regal room in terms of the precise timing so there they say that the metadata for all journal articles must be submitted to your institutional repository immediately upon publication. So it's clear that while the ideal would be it's deposited on acceptance I think we can accept that it may not be exactly at that date it may be as near as possible to that date as we can get it. Now the implications for researchers is that they really need to plan for open access right from the beginning. It's too late when they've actually published the article in a journal that's not going to support open access so they need to think about it upfront and that means actually at the application stage now because there is a section in the application called communication of results where there are two outline plans for communicating the research results to other researchers and the broader community. This is something that should be flagging it for them that it is an issue they need to deal with and so they need to consider their options at this stage so that they can put it in the application. They also need to acknowledge the grant on the publication so when they're submitting the manuscript to a journal they need to put the name of the funder and the grant ID. Some publishers are actually offering a taxonomy for a controlled vocabulary of funder names but if they don't we should be encouraging researchers to use a standard form of the funder's name and fundref is a taxonomy that's readily available so it's been created by the crossref people and so they can go in there type in a funder name and it will give them the standard form of that name to use when acknowledging the grant on the publication. Another obligation for the researchers is to provide the institutional repository with the publication details and the grant information and also a copy of the accepted manuscript version unless the paper was published in an open access source. Now some of the practical implications for the administering institutions are that we need to develop an alerting workflow so that we can have and identify the grant related publications because it's actually not that easy. It's easy to get a list of the grants and we have a list of publications but this is where we're trying to join those dots. Try to identify which publications are grant related and which grant because many of our researchers have got multiple grants and some of the publications apply to one or not another. And so of course the I the institutional repository needs to have a metadata field to actually store the grant ID. And also we may need to review our policies to make sure that they support all the activities related to compliance. In that I mean does your institution have a policy that requires researchers to engage with this process. Also maybe the institution could consider supporting open access publishing in some form whether that's coming from library funds, institutional funds, grant funds, but maybe there are things that we can do to be facilitating that. And then also we need to be checking the final reports for compliance. I think we also have a responsibility to communicate the policy requirements and the options for compliance so that researchers know what they need to do and what are their options. And the Australian Open Access Support Group has created some really useful graphics that we can use as part of that communication plan to send out perhaps two researchers when we hear they've got a new grant. At the application stage perhaps we can provide some assistance such as providing some generic text that they could customize on what they could put in that section of communicating to the wider community. And possibly even identify a list of publications, relevant publications in their area that would be compliant with the grant rules. Also we may start getting questions from researchers about how to answer the questions that are on the research grant management system. So a lot of the compliance is built into that management system when they're submitting the final report. They have to actually tick some checkboxes and they probably need to understand what's the question and which is the right answer relevant related to what they have done. I'll move on now to the guides to tagging grant related records. And so the link to the call guide is on the call website and the URL for this page is on the screen here. If you haven't seen it, then I think this presentation will be available afterwards and you'll be able to get the link from there. Or just Google call and then you should be able to navigate your way to this page. I'm not going to go through it in detail. I just mentioned some of the main points. The main points are that in the technical preparation we need to make sure that the name of the funder and the grant ID is actually in the metadata, but that it is output in the form of a Perl, so a persistent URL. And the example is here on the screen. It can be done in a number of ways and I'll mention that in a moment. But this is basically what it should look like on the repository record. This is an ARC grant with the NHMRC. Often they don't have other characters at the beginning of the number. It's just a numerical ID. And importantly, the information must be stored in the DC relation field. And that is to enable it to be harvested by the aggregators such as the National Library and other search services. At QT we've created a couple of fields. I've got those on the screen here. So a field for the funding body and then a field for the grant ID. Now at the moment, this information is entered manually, but it's also possible to do this as a lookup. So if you're using the lookup widget created by ANS. So they've got this research grant API where you can have a lookup and people can actually search for the grant and then select it from the list and it will go into the metadata field. If we'd known about that when we were doing this, we probably would have gone down that route and we still may do in the future. And so the poll actually links to the research data Australia activity record for the grant. So ANS have very helpfully created pages for all of the ARC and NHMRC grants. And so when we create the poll, it will resolve to this page and that gives people a lot more information about the grant. And it means we don't have to store that information in our repositories. So ideally the chief investigator will provide this information when the publication details are deposited in the repository. If the work's been published in an open access journal, then they only need to supply the publication details because we can just link to the open access copy. However, many repositories do choose to store an open access copy in the repository as well, just in case the journal disappears just as a backup. Moving on to the new guide to tag in created by the National Library on the Trove Help Center web page. And this is, it's a technical guide. So it talks about how to store the metadata in the DC relation field. And so the link to the guide is on the screen now. And this is an excerpt from the guide. So there is a section on ARC grants and another on NHMRC grants. So it talks about how the form that it needs to appear in the metadata. The reason DC relation was chosen is that it's a repeatable field. So you can have a number of DC relation fields in your metadata record and that can accommodate multiple grants and other things that you may be using that field for. The other useful resource that Trove has created is the Profiler. So again, it's available from the Trove Help Center and you can set filters. So in this example here, one filter is NHMRC. So this is show me all records that are tagged with the NHMRC tag and then limit it to your institution and then display. It will actually show how many records from your institution Trove has been able to identify with the tag and it graphs it across the years. That's a really useful visualization you can use when communicating with perhaps your office of research about what needs to be done. Moving on now to the papers presented at Open Repositories that were related to Fundament Fundates. The first one I'll mention is a paper by Peter Millington from Sherpa and his paper was called Making Sherpa Fact Local. But what I want to talk about is actually Sherpa Fact. So Fact is an acronym for Funders and Authors Compliance Tool and it's been developed to help UK researchers check whether or not a particular journal is compliant with their funder. And so you'll see that in the record all the main UK research councils are represented and so they can actually tick the appropriate one and then do the search and it will actually tell them whether or not it first of all gives the details of what are the options when publishing and if you have a grant from that particular funder. So in this case the funder is an natural environment research council and it gives them the summary of the requirements of that funder. Now what Peter was actually talking about was their new API which is a tool to enable institutions to customize the Sherpa Fact resource so they can actually embed it on their webpages but customized with local policies as well and also give it local branding. That's not particularly relevant in our situation because it doesn't actually mean customize it to the extent of including the ARC and NHMRC policies however call is currently discussing with Sherpa the possibility of including ARC and NHMRC and possibly other major Australian funders in the Fact tool. So watch this space it could be really really useful. Another paper was by Europe PubMed Central and they were talking about how they get their articles that are funded by the Welcome Trust into Europe PubMed Central. So it's by a variety of means sometimes the publishers make all of their content available so that's the open access journals. Then there are the hybrid journals that make individual articles, open access and then some authors self archive directly to Europe PubMed Central. Sometimes the publishers are actually supplying the accepted manuscripts to PubMed Central but the authors need to sign off on the deposit and they also spoke about repository junction which is a broker that will actually push the publisher supplied accepted manuscripts to the relevant institutional repositories. So it's only at the planning stage at this stage but it does sound like a useful development. There was actually a workshop called Dealing with Fundament dates practical support for repository practitioners by Dominic Tate from the University of Edinburgh. But to be honest there wasn't really a lot in there for Australia because it mainly focused on the UK Research Councils and talked about their requirements and what the UK institutions are doing. But what was interesting is that Dominic mentioned the compliance expectations of the RC UK funders and you can see that they're not expecting even 75% compliance until 2017 or 18. So that was reassuring for us. Then there were a number of papers on orchid and a lot of the rationale that institutions were using for implementing orchid included reporting requirements to funders and they were saying that orchid will be the glue that will join all the services together. And finally this was my version of joining the dots. So I looked at which of the dots we are joining now. And so our institutional repository records are discoverable via Google. So there's a dotted line to the repository record and also to our staff profile pages which they themselves are linked to the repository record. The repository record links to the accepted manuscript version which hopefully will be open access but also the published version which may only be available to subscribers. But the crossref which is again the crossref people have come up with a search interface where you can search by research funder and it will list all the publications that the publishers have identified as having that funders acknowledgement on the paper. So there is a link there. The pearl in the record will link to the trove, sorry will link to the ans record for the grant and also is being harvested by Trove. And our records in some cases are linked to our data repository where there is a data repository record for the data set. And in some cases also to our software finder which is a software repository for research related software. And these of course are harvested by research data Australia. So I can see that where we have a plan for joining the dots. The biggest dots we need to join now is identifying all of those publications related to grants that we don't know about. That's where I shall finish up now and hand back to Natasha. Thank you Paula. Going to hand over to the ans Canberra office. For those of you who don't know me, I work for ans in my current role only since the start of this year, but I had worked for ans some time in the past, mostly around the infrastructure, architecture and particularly in relation to supporting connections. So things like party identifiers and grant identifiers, etc. So this is all coming back to haunt me. And this presentation, I want to look at some of the mixing links we have in relation to the context of research outputs and how we might address that, at least partially, through better identification of research funders and research grants. Just a couple of illustrative examples to get us sort of thinking about it. Here's an open access journal article that's based on a long longitudinal study that's been running for about 20 years. And this was funded from multiple sources, including the NH and MRC. However, to know this, you actually have to read the article. There's nothing as you see here in the metadata that says any of this. And inside the article, the content says this work was supported by the National Health and Mental Research Council, Channel 7 Children's Research Foundation, the National Heart Foundation, Northern Territory Government Research Innovation Grant. And this particular entry is from the Charles Darwin University Institutional Repository, but of course is also published by the publisher Biomed Central Journal with similar metadata. But in fact, the NH and MRC grant that partially funded it does exist, does have a consistent identifier and does resolve to an entry in research data Australia, which gives a lot more detail about this research grant. But the article doesn't link to it. The metadata could have included this identifier as Paul has already identified. And then one could link through to the research grant and even pull into the metadata, into the display in the discovery services, Paul, for example, a title of the research grant or some other fields about the research grant, actually pulled by an API into a description of the article. Now, and at the moment only has research grants in its registry from the ARC and NH and MRC. But we are now pushing on to try and gather grant information from a lot more funders so that people can link to other research grants from other funders. Additionally, for this particular article, if you look through it, it's obvious that the conclusions are drawn from a significant and no doubt costly data collection process over several years, which could be of value to other studies and even other disciplines. But there's no reference in the article metadata to the data set as a research output in its own right. And it appears the data is not being published. It could have been, but I couldn't discover it and published with a full description of the collection methods, data structure, access guidelines, licensing, etc. However, a Google search returns a lot of references to this longitudinal study with contact information, but absolutely no statement about availability. So these are the missing links that we need to address. Another slightly different example from the University of Queensland Institutional Repository does have a grant identifier in its metadata, but it's a local identifier and, of course, doesn't leak through all the results to anything. The Google search with the title of this article actually pulled up a PDF document from the National Breast Cancer Foundation, which actually lists all their research award grant awards. This one here, which I've highlighted, is obviously the grant referred to by the ID CG-12-07 in the article metadata. So what we need is a globally unique identifier for funders, such as the National Breast Cancer Foundation, and also for the individual grants that those funders award if they can be made available through some sort of central aggregation. Then the article metadata could have linked to a grant identifier which resolves to the details about this research award. So that's what Anne's hopes to work towards in collaboration with Australian funders, with Crossref, with publishers, and with international partners in the Research Data Alliance. And finally, another type of missing link we see here, a data collection published in Research Data Australia. It has good metadata, but no link to any other material which might provide even more information about the data, how it was collected, details about individual data fields, et cetera. The description mentions that it was funded by the NH and MRC, but there's no link in the connections area to the actual research grant, which is in RDA. But even within RDA, a data set doesn't link to the research grant because the harvesting of this data from the institutions doesn't contain that link. They don't have that link in their institutional data repositories in all cases. But another Google search found an article which obviously does describe this data set. So it would be really nice that this article could have been linked to in the data set metadata in a related information field. So the people could they wanted to know more about the data. If they wanted to reuse it, they could have gone to this article and found out a little straight to it and found out a lot more about the data. There's a lot of problems to be addressed here different ways of doing it. But what I'm going to talk about is just under identification and grant identification because that will partially solve some problems. And journals invariably require authors to acknowledge funding when submitting an article for publication. In some cases, a pick list of funders is provided in the submission form, usually from the funderfdata base API. And they are also asked to supply the grant ID. However, in most cases, the metadata field for funding information is a free text input box, both for the funder and for the grant ID. We see that some publishers or journals do provide a drop down for the funder. So they use a funder tax on me. But even there, the grant ID is just a free text input box. Usually they use the correct ID, but there's no way for them to check that it is correct. If a global database of funders is supported by the publishing, research and library sector, then article and data set metadata can refer to a standard global identifier for the funder. Available by a lookup widgets when the author is submitting their article. And then searches for articles and data sets can be filtered by the funder as they would all be using the same funder taxonomy and reporting to funders on research output would be easier and more information about the funder could be a click away when looking at the article or data set. And then moving to grant identification a globally unique persistent identifier for a research grant which resolves to details about the grant is is valuable context with a publication or data set being described. The grant ID which is just free text and not resolvable will not provide this information in a single click or enable discovery services to access an API API or web service so that details can be included in their own discovery displays. If publications additionally and another benefit to this is if publications and data sets refer to the same research grant identifier then connections can be inferred even when not explicitly stated but the metadata repositories for both must use the same form of the grant identifier. And this will also enable reporting of outputs against specific research grants. Am I just sort of talking blue sky here or can this vision is it all feasible? The good thing is that there's already a starting point in that fund ref a project of Crossref provides a standard way to report funding sources for published scholarly research. It has a standard tax on a mere more than 6,000 funder names with some limited information about the funder. Some journals provide a submission process for the authors which has this control list of funders to select from and then they're prompted to enter the grant ID as free text. This funding information is then made publicly available through Crossref's own search interfaces through their API and through the Crossmark service. The Crossref API can be used both to control the input of funder names user interface for submission and to also display those funder names and grant numbers in display services discovery services used by institutional repositories discipline repositories research management systems etc. So this is as Paul also I think had a slide if you use the funder as search you can just put Australian funder name not just Australian Research Council they have many other Australian funders taxonomy 357 volume big stack but a search on Australian Research Council will provide those hits and you can see there's such a small number of articles that it's obvious that only a very small percentage of them have actually identified using the controlled list Australian Research Council's funder. Many many many others will have that in their acknowledgements but they're not able to be drawn out through the search interface. When Paula mentioned you know having an alert service which is very useful for institutions to be in libraries to be alerted when there is a publication that's been funded by a grant this is actually possible because the Crossref does have a harvest incremental harvest service for publications which we could use to build an alert service. The issue at the moment is is that currently there's no filter to subset that harvesting process by a funder but we've requested that ability so watch that space because this is feasible to set up such an alert service. Crossmark identification service which is another Crossref service is sent a signal to researchers that publishers are committed to maintaining content. So when you go into when you follow a DOI for a published article and they've used the Crossmark information then this pops up and you can see that if the metadata contains funding information it's displayed in the record tab. So here you see what's echoed what's been submitted to Crossref when within the article metadata when requesting a DOI but the grant numbers as you see we just have numbers because that's all it is free text. The current Fundref database isn't complete but the coverage is quite extensive and they have processes available to match funders against the database in order to add more funders but we need a coordinated national approach and the ANS registry which already has the infrastructure to record parties related to research as well as established machine services is probably a good candidate home and would need to integrate with the Fundref database and record the Fundref identifier. The DOI, the identifiers that Fundref assign to each funder is actually a DOI and we need to just if everyone uses this identifier for the fund that we have an integrated global system then it's possible to download the complete Fundref database from the website and I did so wrote a script to extract all the Australian funders into a spreadsheet which I've made available and so we're also liaising with our counterparts in the UK, Europe and the US, Canada, etc to ensure we have consensus on this because we don't want to go ahead and use the Fundref database of other people decide that they need to set up a different scheme. What can we do about grant information? It's a little bit more difficult because gathering the data is probably going to be hard slog. Fundref doesn't support a grants database currently so we've initiated discussions with Crossref and with selected publishers to investigate their plans their future plans and their interest in also having lookup services for grant IDs and their submission interfaces. For example, they could use the ANS Research Grant API already to supply a control list of grant IDs if the fund is the ARC or the NHMRC. So this would lead to improve cleanliness of grant numbers and would also mean that the proper identifier is included so that it can be resolvable to detailed information display. And this detailed information would then be included in Crossref services and hence in all the discovery services that we have for publications and data. The grants databases, we only fund a small fraction of research internationally and we have some international initiatives which I've listed that are also aiming to do or have already done what ANS has done with having a grant database but we need now to aggregate data from various funders in Australia into our registry and that's probably the hard work. And we need publishers to work with participating journals to enable the control submission of funder and grant information. They need to encourage the journals, they need to pass that information to Crossref and they need to enhance their own discovery and display services to include that information. There's a list of publishers back there of participating publishers in Fundref at the moment. And there's also a need to influence the manuscript tracking system vendors because they're the ones who have the user interfaces where researchers submit their manuscripts for review and it's there in the submission guidelines and in the systems that we need to provide an easy way for them to enter this information by look up. And the same is true for libraries and institutions, their institutional repository systems I need to also provide easy user interfaces for entering this information. And so this was just a quick example of how it might look, you know, a UI that I mopped up where instead of the free text box acknowledgement box, you have something like, you know, select a funder, there's a drop down. If you know the grant ID, type it in and then click look up to make sure that you have it, that it's right. If you don't know the ID, type in a few keywords and click search. Click search, you add to put in a query, you put in some words, you get the results, you click the one that's the grant, link it to the publication. Similarly, you just type in the grant, click look up ID, and then it echoes that that ground refers to that, is it the right one? And I've just left at the end some links that you might want to follow.