Hey everybody welcome back today. I have got a very special monitor for you. This is the largest Sony PVM that I've ever worked on. It is a Sony PVM 3230 that is a high-resolution Trinitron monitor that I got to service and man I gotta tell you when they talk about things like barn finds this was a literal barn find so I can't wait to show you the Repair footage, but first I'd just like to show you some of the documentation. I was easily able to find online Including the service manual, but the first thing I want to show you is just a little operational or instructional manual on This monitor so could show you some of the cooler things about the monitor without getting into the full service Manual or manual, but if you do need to get into service yours, that's a great reference point and so if we start here and look at some of the things on this monitor, I wanted to show you that we're important were the features there is a 650 TV line monitor Tube on this a fine-pitched Trinitron tube now the one I worked on was from 1990 So this is in the late 80s early 90s was when this one was made Here's some other things that it talks about on this monitor specifically it does have analog RGB, which is important and I think that over here This might be one of the more underrated things about this specific monitor and that is that it has an amazing sound system hi-fi sound Coming straight out of it stereo and then it also supports a sony remote So you can use a remote control and adjust your monitor from say your couch With this monitor, so that's a very big plus There's a lot of good things in here telling you how to use this monitor and some of the features of it So if you are interested, please go in there and check this out the last thing I want to really mention is the weight on it and hopefully it listed here towards the bottom But it is a very heavy monitor I actually had to have Myself and two other people lift it So if you do get one be very careful trying to move it and you don't hurt yourself So if we get down here to some of the Specifications on here it does have the 93 k Color temperature, so please note that it's not gonna have multiple color temperatures It just has the one color temperature and It is not 65 k or 6500. It's 93 100 okay, so there's one thing to note specifically on there. I will tell you does have a exactly a 32 inch tube on it there's some Look at the the actual dimensions on the screen It gives you some formulas so you can figure that out and I promise guys will get to that real soon to the Actual stuff on here. Well, I'm not able to find that exact weight. I'm sure it's listed somewhere And here and I'm just missing it But dimensions here we go 185 pounds and three ounces so it's a monster Definitely couldn't lift it on my own So just keep that in mind if you come across this monitor, you're gonna need somebody to help you move it So let's go ahead now and get into our footage today for this monitor and as I said This is definitely a Rough condition monitor If you saw a couple of videos. I've done in the last couple weeks. I did have it in the background behind me It's been swapped out for 25 30 now because the 32 30 is gone from my shop But at the time when I got it, I could not even get a stable video signal into it Except RGB and it was very wonked out. You'll see that but I wanted you to take a special look at how just dirty This is that white stuff. I think that is like spider and bug droppings This thing was just loaded with spiders those droppings were all over the place lots of cobwebs And it definitely looks like stuff that we just pulled straight out of a barn Thankfully, there wasn't any like evidence of water damage. There was tape along the sides of this bezel and That's quite common for these larger monitors if they've had a rough life like it looks this one had like this one has Just again the front was filthy and you can only imagine what it's going to be like when we get inside of this thing so that's just a quick look at how Awfully dirty the outside of this monitor is as well as look at the picture I mean it almost gives you a headache just to look at it to begin with the first thing I'm gonna do is take the shell off and I want to Really get in the back here and do two things I want to check the how see how clean it is inside and then I want to get that shell that bottom back casing out of my Garage immediately and I'll show you why in a second, but these are the main boards this first one I'm focusing on here is our geometry board This is the main deflection board and then there was the mini board with all the controls on it Which will go into detail later on but this is Some of the botched repair work I found inside this pvm. Unfortunately somebody Probably 20 plus years ago. I got inside here and just tried to do some repairs And so when you find that it's kind of disheartening especially when you see they did such a lousy job We'll see some more that unfortunately later on as we're working on this monitor But we can tell for sure that no one's been inside it for quite a long time There's cobwebs all over the inside and multiple spiders Living inside of the monitor and then I wanted to show you the outside of the shell. It was pretty much unbelievable The camera I was using may have a little bit of a refresh rate problem So just keep that in mind, but you'll get to see here the exact Moment I looked under this Shell and saw I mean there's live spiders. There was three or four of them and they had 20 plus egg sacks ready to hatch and They had carcasses of beetles and just you know years of Free rain to use that under spot of this pvm as their personal trap for every creepy crawly bug That managed to get close to this inside of that barn it had been stored in for the last few years So naturally I'm gonna have to clean all that off which isn't a big deal And I'm glad it's outside the house. You see first I saw that spider and Tennessee we actually do have black widow spiders and it scared me I thought it was a black widow, but thankfully it wasn't just a small nothing special spider and So now I'm just gonna get in and clean off the rest of the cobwebs as well as a lot of that over Saturated dust that's built up on the components just using that non Conductive paintbrush with extra cream clean bristles there. Sorry about that We're gonna get in there and clean off a lot of the cabling as well as a lot of the components and make sure that we get all That built up dust and cobwebs off of there before I even really start working on this thing I don't want to get in there and Again have all this stuff short something out or something like that So I want to make sure I get a lot of this cleaned off and it also helps to inspect The boards you go through cleaning them It gives you a first opportunity and inspect the boards the inside of the monitor and to see how it's built out because again This the first time I've worked on the 30 230. It's a very rare at this point to even find one of these still around or working Again, this one had a quite a rough life It looked like it had traveled a few times and been serviced a few times before and I don't know that it was Done professionally or by you know anybody from Sony. I imagine it was probably a smaller outfit We're just getting in there and knocking a lot of that dust off And just so you could see the ups top side of what the inside of the PVM looks like now The other board on the opposite side of our deflection board will not be receiving any service specifically other than a checkup and Inspection just to make sure everything looks fine And it's not causing any issues because that board doesn't get as hot as the deflection boards or the power supply board And it also doesn't control a lot of things that we're even going to be concerned with adjusting on this monitor Except for color, you know if you have a color issue and you can't correct it You can want to try to maybe inspect that board closely and get a feel for if anything's Component has failed on that or even the neck board you could service both of those on this But we definitely have to get in there and service the deflection board You'll see why here in a minute. So finally got it cleaned up and We're ready to put the 240p test suite into the Input on the RGB and start to adjust those Potentiometers to see what it looks like at first try without even replacing any capacitors I wanted to give it a good test and see you know how it would look and how it would play out So I did that and it was very touchy I could not dial anything in really it would just drift way out or weigh in especially on the pin settings and So I kind of got the idea that we're probably gonna have to replace a lot of capacitors in this and also we had some purity imbalance here and That's most likely just because it's not been turned on a lot plus There's a lot of magnetism that affects things in my garage specifically where I work and so That can just be more a product of that magnetism in that spot where the tube is setting But the most important thing is we definitely got a service this deflection board and most likely the other deflection board Just to make sure that we can adjust it properly You see it's a lot of potentiometers on this board now. Thankfully, it's just single-sided and it's pretty high quality So it's easy to service Now we'll show you probably some more spots in here Where someone has come in and tried to heat up some points for some reason thought maybe there was a cold solder joint I'm not sure but I definitely went through and recapped this entire board and that way I'll just have a piece of mind of knowing that At least this board will not be causing hopefully any issues as we try to go on and get this Monitor fixed up for Eric. Eric is a patreon member and he brought this 32 30 and he also had seven other 25 37. That's right and Unfortunately, a lot of them are tore up one of them is behind me But you'll have a lot of videos coming about those bigger monitors and again there Most of those are in really pretty rough conditions. So they had to have a lot of work done to them So back to the 32 30 the board's been restored and here it is. We're going to plug it in and see what it looks like So Now we'll try to go in and adjust again and I've just got to spend a few minutes here tweaking these potentiometers. You can see how this process is. It's very manual and finicky and time-consuming but You know, you're gonna have to just use a combination of spinning those potentiometers till you get the screen as best you can So I continue to attempt to work on this screen and get the you know picture looking good enough to Overscan a little bit, but I was having troubles because when you expand the screen size You'll notice that it also causes the pin cushion settings to warp a little bit But after a while I was able to get a better picture and I did have to do one more component swap So I did not have any of these potentiometers in my shop But what I did was I used a potentiometer from another spot on the board up here that I'm going to point out And that's one of these convergence adjustments. I swapped that one It had the same tolerance and rating as the one that was not working that well over here in the pin cushion settings now that you might Wonder if that would have affected the corner not really because that setting didn't really change the convergence as much when I adjusted it So I used it and swapped them and I was able to actually get a little bit better of an adjustment with a better shape Potentiometer I also off-camera recap to the D1 board So that board has been pretty well serviced. There were some spots on it that had been Touched up before by someone else. So that was kind of disappointing But now the real trouble is going to go in here and get to the power supply unit and that is behind That input board so to get to that we'll need to again take this monitor apart and Get into the back Well, I want to unplug it and then we'll unplug all these connection points just like any other Board on here now. These ones are all a Size that's specific to a specific spot on that board and They're all zip tied together. So you shouldn't have any trouble servicing this board if you have to take it out and Get it back in it's pretty easy. There's two Phillips head screwdriver screws holding the input board in place and then once you lift it out of the way you can get into the back of the PVM and we can talk about The power supply units and the power supply units was kind of a mess on this monitor Many of you looking at this might say well, I don't see what you're talking about but specifically we're going to go through I'm going to show you what was really messed up on this one somebody had come in here obviously and worked on this before and They had messed with this FC card. It had been hot glued into The CRT back right there or the power supply had been hot glued right in there We also had a custom fuse installed here And so I was going to have to try to do my best to work around that fuse Surprisingly this monitor turned on but just seeing that to start with kind of is concerning Now when I take this board out, I Did mark where each one of these connectors Was located on the power supply board that I'm about to remove Because a couple of them were similar in size So I wanted to make sure that I had them all lined up properly So definitely document where they go. There were four screws holding it in place. They are inside the frame So once I got it out here, we can take a better close look at the real problem areas These are some extremely old capacitors 30 years old and it's definitely time to just go ahead and replace those Here's a look at this fuse. This is just crazy and Unbelievable it's been working this long and unfortunately, I don't have this fuse So I'm gonna try to work around it keep it there for now As long as it keeps working We'll work around it But when we look at the bottom here and see how it's attached on the bottom of the board There's a lot of repair work. We're gonna have to end up doing over there Same thing with this board. I'm not really sure why it's been glued in It's supposed to be a connector in there that just holds it Similar to the ones that are holding in a lot of the cabling on this monitor I don't understand why this person had to glue this board in but it was done that way and I'm not gonna attempt to Remove all that and damage this further and this was a real Great spot here that had been damaged. This is where one of the ground connection Points was coming into the board, which would have looped through the whole monitor There's also a couple other spots on some resistors that were burned up some of these connection points looked like they had possibilities of cold solder joints developing and Here's the back of the fuse repair, which was just an utter mess just well disgusting and Some more spots on some resistors Some ICs and really it just you know, you look at this and you're wondering how this even continued to work As long as it did it's a big blob of solder some of its slaughter Sotter over there and then we've got some capacitors that we're going to be changing around here So we're definitely gonna have to work around this fuse I'm gonna reflow the solder on all these points too because again, it just looks very dull and nasty and Really surprising that it maintained current and was able to work even at all And considering the condition of this board and just the terrible repair work that somebody did to it So here's my cap kit We'll go ahead and get started and swapping out a lot of these caps. You'll notice a lot of these caps have changed size significantly After we change them looks a lot better These are even better than the ones I pulled because they're 30 years newer There is some been some technological advances in less 30 years in capacitors So they are better and I'm going to show you the board now With a close-up of the repaired areas just so you can see again how I went and reflowed solder and clean the boards and Then tried to just do the best I could to repair a lot of the botched work This was even loose and had to be grounded onto another point So but it's still functioning here's the fuse area and all that I reflowed all this solder and replaced all these capacitors so at least Eric can have some confidence knowing that it probably is a lot better than it was for sure when We got started with this project because again, that was just a terrible job, but and you know, if you don't really Know what you're doing in here. You can go in and damage it But I wouldn't even say that about anything now because this was obviously done by who knows from I think a bit 20 years ago Someone tried to come in here and do these repairs and somehow they made it work till we got it now So let's go ahead and put the power board back in Run some more tests and hopefully everything will work After that because I'm a little bit. I was a little bit nervous. I got to be honest. It's it's not It's not a guarantee that everything on there is Perfect, but I do check everything like I've shown you in the past in other videos with my multimeter and continuity And so I also am not surprised when it works because it should you know, hopefully everything Work fine after we do the best we can and check all our work So now that that power supply has been Recapped we can finally go in here and try to do some more tightening in on our adjustments And I could show you here what this struggle egg Chassis and Deflection board has a problem with if you look here at the Point in the middle of the screen that I'm circling with my cursor right now right above my hand where it's red and white meat It kind of bows slightly towards the center now in other monitors. They'll have adjustment for that called sexy So if this had that sexy adjuster then you could dial that in a little bit push that towards the center and balance it out But unfortunately when you expand the horizontal size on it It just it starts to morph the edges because it's really pushing the limits of the deflection yoke to have a perfectly Set screen on such a large tube But I did the best I could with it and it looked a heck of a lot better than what we started with so we're going to show you some action shots here and I will Minimize myself even a little bit more so you could see that I mean it looks really good for a 600 line Monitor and over 600 line. It's a 650 so it's very sharp and Thankfully the colors were still good. No weak color gun or anything. So that's a big positive There are probably some other things you could work on on this CRT but that's all we're going to do for it for today and I thought I'd show you an after picture of the cleaned up PVM because I had to spend a lot of time to get rid of all those spider webs And hopefully I got rid of all of them But maybe one or two managed to stow away high hot and hide under something that I just couldn't see but for the most part they're gone and It was just all around a very fun project But it's difficult to work on such a large monitor I mean, but I'm glad to be able to have the opportunity to work on it and I hope that if you've run into one of these and you're lucky enough to get one that maybe Referencing the service manual or even looking at this video might help you in some point some direction as to what the problems might be I Did have to buy some new? Duck tape and apply it on the side there of this bezel because there was no There's no way the bezel would hold together Anymore without the tape unfortunately but all in all we got it cleaned together or cleaned up put together and adjusted out to where it looks pretty good now and I think Eric's gonna be a very happy with it. So All I can say is I'm glad my back is glad that this job is over with and I hope I don't have any more 29 inch CRT's that are larger 32 inch excuse me last was 29. This one is 32 But Sony kind of went away from the very large screens. There are some BVMs that are 32 inches I've never seen one of those but who knows maybe somebody will bring one of those by this year and get them serviced next time we're probably going to be looking at 14 L5 that was Corey from my life and gaming second monetary brought to the shop that needs to have a tube swap So that'll be an interesting repair video. Thanks for joining me today on this lengthy and large PVM repair if you do have any questions or comments Please leave them below and please leave a thumbs up if you watched to this point and enjoyed it And I'll see all you guys next time with some more retro content


Video equipment rental costs paid for by peep code screencasts So I gave a lightning talk at the Mountain West Ruby Conference on this topic And I did a lot of hand waving and I was trying to get it done in five minutes I think I got it done in nine or ten so I failed at that but That lightning talk I wasn't planning on doing it. I got there you know noticed a lot of max and just wanted to go over Ruby Coco and developing desktop applications on OS 10 with Ruby And we'll go ahead and this is the schedule So I'll talk about why me. What have I done that? Let's me stand up here What Cocoa is what Ruby Cocoa is go over some examples of applications you may have used that are actually Ruby Cocoa applications? Do a quick demo so it'll be like the lightning talk, but I'll Take more time and walk through it some more And we'll talk about the future of where Ruby Cocoa is going and some other stuff So the who am I I'm from Boise, Idaho. I Spent most of my Paid software development career working for Equalogic This was the best image I could find because they were purchased by Dell in January and I quit And I'm now an independent contractor under the name of Rubisoft and I also developed some apps Ruvid Both of these apps actually were done while I was at Equalogic Let's you just drop videos on and it saves profile so it'll resize your video and whatnot and Roo switch Let's you Create profiles for any application any Cocoa application so you can have two copies of your address book for work And home whatnot That received a design award from Apple and some other people like it When I started getting to Ruby and rails I started the side project simply in voices it generates invoices So I contract for McCallum media doing Rails stuff Catalog choice org is coming up on its millionth millionth user MLK comm is a German Band promotion site for concerts and we're currently working on this Writing our future where students are writing to the next president and it's going to be published on a map and whatnot I'm a father of these two They get along So what is Cocoa Cocoa is not this Chocolatey drink in this case that was Cocoa, but it's apples Name for all their Objective-C Frameworks so covers things like quick time address book Bonjour Quartz all the display stuff core graphics core animation core sound or core audio rather and It comes from next so when Apple purchased next they OS 10 used to be the next operating system and So all the classes that existed at the time are prefixed with ns for next step And They just never change that never need to When I was working at Equalogic, I got my first Mac off eBay and I realized I needed to learn you know, I wanted to learn how to program on it and how to develop native applications for this platform that I'm falling in love with and I noticed that Compared to the embedded systems type work. I was doing Cocoa and Objective-C and just executed the whole platform really did actually make it quick and efficient And the same sort of thing happened when I got into Ruby and Rails, you know, it was like wow This is way better than PHP which I had played with So Cocoa is built with Objective-C and it's not as bad as it sounds It's actually fairly nice ones you get used to the brackets. So it looks like this here It's just allocating an array and initializing it with two strings So there's some similarities between Objective-C and Ruby they both pull some stuff from small talk But so messages are sent objects. You don't call functions.  It's not strongly typed although it is C and There are definitely types You can everything falls back down to pointers are passed around and it's works out well Classes are kind of open. You can use what they call categories to add methods to classes, but you can't add properties or Really do it all that you can with Ruby, but You can add to it with leopard Apple Shipped Objective-C2 and that does not have blocks that has the garbage collection and stuff in snow leopard They're shipping Objective-C 2.1. It's going to add blocks and some other cool stuff So it's on the way with Objective-C. I found when I was sort of digging up all this stuff Wikipedia has a really good entry on Objective-C to just go over the highlights and how it's different from C and C plus plus and covers that stuff So when you're developing a Cocoa application Ruby Cocoa Pi Opsi or whatever it may be you're going to use Xcode and interface builder There you probably haven't installed they come on the OS 10 disc. They're free You can register at developer.apple.com if you want the latest or if you don't have it So Xcode is where you spend most of your time. It has this new organized feature It's new in leopard and it sort of just lets you build you drag your project in there if you want to see a Listing of your projects and you know easier to open them. I guess It's new in leopard. I haven't really gotten into it. I'm not sure of anyone who does you can see the the devices That's where phones show up if you're doing that sort of stuff It edits if you want This is what it looks like. It's a pretty good Objective-C editor. It's a pretty bad Ruby editor a good example of this is if you select some code and you hit the shortcut the keyboard command to comment out That block of code it uses C slashes to comment it out So there's some and I'm sure they're working on that You know it was first an Objective-C editor and they've sort of just put in the Ruby stuff and Python stuff as they've gone along So it's coming But you can tell Xcode when you double click on a dot rv file open up your favorite text editor and it'll do that So it builds it manages The whole build environment so you can give it tasks you can create new tasks if you want to work with Something in your build stage. So a typical example is if you want in your about box You want it to say 0.1 and then in parentheses the get revision or SVN revision you create a Build task that just pulls that you know queers that shell script that queries that puts it into What they call your info dot plist which describes your application and then it shows up there It's a really good again really good objective CD bugger It's using sitting on top of GDB and the compiler sitting GCC compiler. So it's standard stuff with a pretty front-end But it's not so good with her. I haven't figured out how to make it so good with Ruby. So I've fallen back. This is the Console where you'll see your log statements and stuff. So when I've been doing Ruby Cocoa stuff I've actually fallen back to doing sort of more printf style debugging, which is unfortunate, but it's not as Often that I go there that then before and it teaches the documentation. This is within the app within Xcode and Their Apple's documentation is actually really good They've got both. This is an example of a Reference for a class really good pointers to other places and they also have these Companion guides and those are really good as well.  It's pretty good And I think you know, they sort of feel obligated to that Cocoa is not open source. So they sort of have to give us decent documentation and It's rarely just flat out wrong. Sometimes there's some steps missing or whatnot, but it's usually pretty good Interface builder is where you'll spend your time when you're laying out your UI This is what it looks like and it lets you just drag controls on standard controls. You set their sizes All that sort of thing and we'll see that in the demo It's also where you if you want is where you sort of glue your code to your interface And we'll also see that and we'll talk about that So KVC KVO and bindings KVC is key value coding and at the base of every Cocoa class is an NS object and it defines a set value for key and a value for key function and What those do is it lets the caller pass in the string of the attribute that it wants to set and if a if the receiver defines a set phyto the set phyto method is going to be called if it has the attribute phyto, it's going to get set and value for key same sort of thing if there's a Method to return phyto, it's going to call that otherwise it's going to use the default implementation so here we're just setting number five and We get it back and the key value coding works with Always works with objects. So we have we can't just pass in five We have to say NS number and the reason for all this is working with bindings in interface builder You can so this is interface builder if we were wiring up this slider to our app controller and Over there. We can see we're wiring it wiring up to the phyto key path they call it and that's going to call that set value for key path phyto And that's going to set our value and when they need to know what the value of the slider is it's going to call the get value for key or value for key rather and Key value observing is also what bindings and What bindings use and that's because before in The NS object set value for key before it actually sets the value It sends these this will change value for key letting the observers know Hey, something's going to change in case they need to know and then it's also when it's done it's going to call Did change value for key and this is just letting the interface now So if you go behind the scenes and you change phyto to Phyto plus one in this case it needs to know that the slider needs to get bumped up and this is how it does it It's observing it. It sees it So if you did have this increment phyto method you would have to do this will change value for key and then did Change value for key if you were using bindings and you needed to Have the UI change So that was all just Cocoa specific. What is Ruby Cocoa? It's a bridge. So it lets us right talk to the Cocoa frameworks in Ruby and You know as it goes between Ruby and objective C Ruby arrays become NS arrays their Cocoa equivalent Strings become NS strings and back and forth they go if there's no equivalent you'll get the The Ruby version of that Cocoa class so an example is actually an NS number which could be a double float It's just their generic number class. You'll get that back and You'll have to say to I or whatever it is you want to do to it This is what Ruby Cocoa looks like Well, that's what objective C looks like. This is what it looks like in Ruby Cocoa It's just Ruby in this case because we're using an array. I cheated on this slide. So We're just using brackets instantiating the array. It's a lot nicer than It's objective C version less words Cocoa is somewhat verbose and You know sometimes that's nice. Sometimes it's not one problem when they Sort of bridged this was that in objective C the way you Why the way methods are defined is the parameters are actually named and broken up like this So if you wanted to call path for resource You have to type out, you know, whoever you're sending it to space path for resource colon that Parameter you want as the string there and then use space of type and then The other parameter that you want so in Ruby Cocoa. We can't really do that because it doesn't fly So what they do is they translate it to this path for resource under of type so anytime you see a colon you can just change it to a underscore and You can also have a trailing underscore because you'll see of type has a trailing colon They made that optional because it's kind of ugly if it You always have that trailing so some examples GitNub is useful for It's sort of like GitK if you've ever used it with a Ruby Cocoa UI on front of it so it shows you your Git log and you can easily go back and forth between branches and Pull out the version numbers and whatnot or just look at the diffs and Well, I was preparing this talk. I moved a couple rails applications over to the Thoughtbot guys Hoptode app and it just lets you push exceptions up to this web app instead of having them, you know at the time I was receiving them by email So now they get pushed up to this app, but you know, that's good and they're all in a central place and You can click on them and see more details and say okay, this one's resolved and that's kind of nice But I wanted something more immediate to know when an exception happened and it was a great they have an API It was a great Chance to use Ruby Cocoa So I created this croak app. It's Open source on GitHub. It doesn't look so great yet But it's just you know, it steals the UI from Twitterific and It's a Cocoa app. It's and it's but it's Ruby the active resource is behind the API that pulls in the errors So that was fun to do and then if you actually go to GitHub and search for Ruby Cocoa a good number of 25 or so projects come back some of them larger than others Some of them better code than others, but you know if you wanted to just poke around and see what people are doing and Get some ideas and what's possible and whatnot. They're there So now we'll dig into the demo now that we've sort of got the Cocoa and what is Ruby Cocoa and it's going to be a really simple demo. It's going to use the faker gem to Just generate some random names for us and then we're going to use Cocoa to slap them into address book So we'll go ahead and do that So we switch to Xcode I'm actually going to launch something since I restarted. It's not all quite set up how I want Okay Say new project.  Under Mac OS 10 you have the option for Cocoa Ruby. It's Of course Ruby Cocoa ignore what they'll try and tell you so we're going to call this friend faker and right out of the box it sort of creates a Somewhat a framework of an app build-and-go just compiles the what objective see there is and copies over the Ruby files So this is what it looks like and it resizes and it's got some menus and quit that and The first thing we're going to do is lay out the user interface and the interface builder works with the nibs and now Zibs in XIBs in leopard and That's basically in the case of a zip. It's an XML file that defines where your controls are and all this stuff A nib is actually a bundle that defines it in a more complex way, but we'll leave it as a nib for now Double-click that and we go to interface builder and This library over here is the all the controls we can pick from Some of them make more sense like the buttons are obviously buttons, but some of these other things are abstractions So what we're going to do is? It has this little search box down here We're going to create a label drop it in there It's going to tell us how many friends we want We're going to fill that in in a text field We need a button And that's going to make friends these little blue lines are just guides that Are so many pixels apart from the different controls and the number of pixels is defined in the human interface guidelines which You know you may or may not want to Go with so we're also going to come in and pull a multi-line text field So we're going to enter in How many friends we want we're going to push the button and it's going to go and make the friends and then this Multi-line text field it's just going to be for logging. It's going to show us what friend names were created So that's all well and good interface builder lets us simulate the interface So instead of having to go back to Xcode and build and go and see how it works when the user resizes or they tab That sort of thing we can just do this simulate And we'll see you know nothing resizes right now, and if we make we can make it, you know completely invisible and That's not good, but so we want to make the multi-line text field expandable. So if we Want to see more names or whatnot we can do that If you type in text you don't have it Multi-line text field You're on leopard That's a good question. Yeah, I think yeah Maybe they added it in 3.1. I'm somewhat surprised, but you can just make that You can make that a text view Yeah, and that should work fine and that'll actually work even better, but So We want this Multi-line text field and if you have questions feel free to to jump in But we'll make this multi-line question multi-line text field We want it to grow with and height and we want it to be bound to where it currently is On the both the right and bottom edges as well. It was currently only bound to the left and top this Is referred to as springs and struts and it's really cool in that you can just you know drop it in there and say You know make this resize grow And you can do some fairly complex things with just that so now if we go back and we say Simulate it should now resize correctly and But when we shrink it all the way down we can see at the top there it didn't quite do what we wanted and really we don't Want The application ever to shrink that small anyway, so if we go to the window we can say In the inspector we can say that it has a minimum size and that minimum size should be the current minimum size And there's just a bunch of attributes for each of the controls that you can change so We simulate that we should be able to grow it but not shrink it and that's good so another thing Cocoa provides is Some formatters so we can actually We go to the library and Is that better or is that not enough? We can search for formatter and there's this number formatter So there's how many we don't want to accept just anything because we'll have to deal with that in our code but we can tell Cocoa that we only want it to be numbers And we wanted to have a minimum of one and there's all sorts of you know these different attributes you can set and these constraints and now When we simulate we should Did I say print? If we type in five, it's not going to let us tab away and It's just going to keep focus there and that's because it wants a number and now we can tab away So it's kind of a nice thing you don't have to worry about When you read that attribute you don't you don't have to worry about being a string or how big it was and it also The default settings is it's an integer. So it's going to round for us And that's exactly exactly what we want. So we're going to go with that Now that we've sort of laid out our beautiful interface here we have it functioning the resize is working and whatnot we're going to go ahead and Wire up the make friends button. So to do that. We need an application controller that's going to take receive the action and then do something with it and Before I do that. I'm going to go into this RB main and this is really where all of the Startup stuff happens. You'll see it pulling in all the Ruby files in the bundle and whatnot, but this is where we're going to go and We're going to require Ruby gems and we're going to Baker and while we're here There's I also like to include the OS 10 module. Otherwise as you can sort of see down here, you have to prefix all your References to Cocoa classes with OS 10 colon colon and it gets old And I'm also going to Pull in the address book framework And you do that saying require framework address book And now we'll have once this compiles will have access to All the address book stuff. So although if we were to look in our frameworks We'll see that we're linking with Coco, but they don't for Reasons of you know trying to having to link against a giant library they break it out. So although Cocoa Does cover address book and quick time and all this other stuff when you actually start writing an application that you want to Use those They're actually in a sub framework of Cocoa and in this case. It's address book Quick times in Qt kit and some other stuff So we're going to do that save that and now We need to create our class that our controller class So you can put it anywhere, but they've got it broken out. You could create a controller subfolder Do it however however you want Say a new file and Again, you know it lists everything you can create it defaults to What you last did so in the case of this? That's Ruby Cocoa and the NS object subclass and That's what we need We're just going to create an application controller. We don't need all that stuff since It's taking for taking care of us taking care of for us by RB main And we need an action to be called so now that we have our controller We need to define what gets called when they push the make friends button So to do that Ruby Cocoa has a I be action function and We're going to name it. You just say I be action make friends and it takes a block It takes an optional argument All the actions in Cocoa Take an argument and that argument is whoever whoever sent you that Action it passes themself as the sender But we in this case we don't need it sometimes It's really handy if you were for whatever reason to have a button that called this as well as like when the user double-clicked on Something in a table view you might want to know did they click on the button or did they? Click on the table view So all we're going to do in this case is just Log a message So now that we've done that it's actually done nothing it's going to be included in our program But it's no one's ever going to call it We have to go back to interface builder and wire up the make friends button But in order to do that The make friends button needs some way to know who the application controller is so in this case What we need to do is create an instance of the class and We define this take this NS object and we're going to say that that this instance is actually an instance of our application controller And we tell it what it is in the inspector The class And you'll see it auto completes for us, which is really nice Xcode and interface builder know about each other, you know, they're monitoring the files and it parsed that if I had a parse error in my Application controller dot rb it actually wouldn't have auto completed because it needs to know that it's a inherits from NS object and that sort of things but in this case it was good and Found it for us So now yeah When you go to interface builder it should if you're in Xcode if you double-click on In resources if you double-click on main menu nib should bring up interface builder and That's the main window controlling the nib so that that defines what's in the nib so that should definitely be there. Oh It might be you might see it like this see the The bigger icons oh right there the I prefer the Outline view because you can actually drill down and see you know inside the window as a content view So that's handy So we've defined this now when this nib loads which in the case of main menu dot nib is immediately or during application start When this nib loads, it's going to create an instance of our application controller And it will send it some some messages that we may or not respond to and we'll talk about that in a second but We can now talk this button can now talk to this nib and one of the cooler things in interface builders how you assign The actions so in this case You help you can help you can either double-click it and you can go down to Or I think in the case, I'm sorry not double-click, but right-click it And we have to do it you have to do it backwards in that case Sorry, I'm not prepared for that But you can say make friends and drag it to Who is going to be sending that and in that case it would be the make friends button? But I don't want to do that. I Prefer to drag from the action to the receiver So in the case of you hold down control click on the button or whatever it is that's sending the message and Drag it over to the controller. It's going to pop up all the Methods that are defined with or all the blocks that are defined as I be actions and in this case we just have the one make friends. It's now wired up you can see all the Connections that are made in this button connections in the inspector. So we've successfully wired that up so now When we start a program, we'll have an instance of our application controller and the button should send us this message and We're going to have to go back to Xcode to see the log and it logged it and Every time we push it it logs it So that's a step in the right direction now we need to wire up the the how many and we're going to do that with Bindings one thing we could do is in our code we could say We could set up an outlet and that says Make friends text field and we could wire up the text field to the controller and then the controller could query the text field But that whole KVC KVO stuff and the bindings that I talked about Makes it such that in a such a simple case like this the text field can control the value of your Property so some people like it some people really hate it Because they want to you know have written out explicitly everything they want going on in there between their controllers and their view But in this case we're going to use it So to do that we go back to Xcode and since it's going to be a property of our application controller We just come in here and we use another ruby-coco Nicity KVC accessor Number of friends and Now when we go back to interface builder We can click on that text field We can go to the bindings portion of the inspector and it gives you a handful of different Bindings to to make and in this case we want to bind the value so anytime the user needs to see the value and anytime The user changes the value it's going to go to our application controller and either set or get whatever we tell it And in this case we're telling it number number of friends There's some attributes you can do some Validation and whatnot and this transformer stuff so if it was a boolean you could say You know negate it before I ever see it that sort of thing That's useful for checkbox, you know, whether something's enabled or checkboxes Things like that so now Our text field is or our text field is wired up to our number of friends. We can come in here and we now have a Number of friends method we can call and I briefly touched on this before when I was talking about the bridging between Ruby and Objective-C the number of friends since we set the Number formatter on it. It's going to come to us as an NS number It's not going to come to us as it normally it would come to us as a string But since we told it to validate it as a number it's going to help us out and send us An NS number which could be in the case of NS number. It could be a double afloat what not we know It's going to be an integer It's already been rounded for us, but in order to call dot times on it. We have to make it Ruby integer so we call two I times do And we'll just log our message for now Right, and if we I've been using the keyboard shortcut, but the little tool the build and go is what I've been using It just compiles everything and then runs the application. So now if we say we want five friends Go back to the console and printed the log message five times pretty much what we wanted. So now we want to Let's actually use the faker gem and say that f name equals faker name First name l name equals faker last name So now we should have a generated first and last name From faker and we'll just log that now We've already required it before in the RB main because we knew we were going to be using faker and whatnot The text field in the case where it's using bindings it's not actually going to call the the set method on our attribute Until I tab away from the field then it knows that I've ended editing you can do some things to say That it should you know constantly update that field and that's useful in the case Or usually more useful in the case of sliders where you want the slider to immediately affect like the contrast or something But in that case I hadn't tabbed away so it the value was still nil and we did it no times and now we've got five Generated names so we're again moving in the right direction And at this point we're done with Or no, I'm sorry now. Let's log those messages to the interface So we're going to just put instead of logging into the console and having to look back and see what they were We're just going to plop them in this multi-line text field and To do that. We're also going to use bindings And we're just going to call it log Go back to interface builder We've already got the bindings inspector up And we just say that we want to bind it to our application controller And it's just listing everything that the nib knows about here if we had other controllers that could be bound to they'd show up here As like the file's owner application will not do So we just called it log So in the case of how many we were the user was sending us the value and in this case We're pushing the value and bindings just work both ways So now instead of NS log we can do Self.log equals put a carriage return at the end and then the rest of the log and Since we're Adding the string value of the the log here We need to initialize it before we can add it otherwise it'll crash saying that self.log returned nil And in order to do that we're going to use this awake from nib method and I've talked about before when we when Our controllers were in an object is instantiated from the nib. So because the nib is loading itself It's going to send some messages one of those messages is that This awake from nib it means, you know, everything's wired up bindings are good to go If there's a view the user is about to see it That sort of thing so this is a perfect place for us just to say self.log equals nothing or empty string rather and If all went well Say we want five friends and they show up here now and it's just going to keep adding them So now we want to that's we'll be cocoa interacting with the UI and stuff but Really, it would be nice to or to really the point of this application is to use the address book framework in cocoa to push them to Push the names into the address book and you could actually see a use for this if you were building an application that used the You know a pure cocoa application that used the address book framework You'd want to test it with you know 2000 records or some thousands of records So this would be a great little tool for that and It would be easy to generate with ruby cocos we're doing here So I'm going to cheat for a second and I'm going to pull in this text clipping That just has the code written out for me to save some time and more importantly save some typos So but we'll go through it line by line We allocate this a b person address book has a set of classes one of them is a b person you can also create groups in address book But here we're creating a person We're going to call through the API the set value for property for a first name last name. We're passing our ruby strings Even though these this set value for property wants an NS string and In the case here the second parameter is the property and it's a constant defined in the address book framework and The way we're going to reference that is with the OS 10 colon colon and then capital K a b first name property If you look in the documentation They did the address book frameworks to find it as lowercase k. We have to make it uppercase For ruby so we go they go ahead and take care of that for us. So we set first name last name we add the record and then we Save the address book off and this address book dot shared address book Returns the system copy of the address book so When we run this we're going to be Adding these names to my address book and we'll see that when we're done And then we're going to save it and this save really wants to be outside of the loop here Because we just want to save when we're done So I think Again if all went well We're done with the UI we're going to create some names create 10 friends goes ahead and creates them and This is a smart group that just says show me all the people with no emails and no phone numbers. So that matches our gene after hire should Show up here. So we're creating them and that's ruby coco a little example of How to create a potentially useful application? So I'm going to spend a little bit of time talking about why you would use ruby coco and Also, I'll talk about why not It's ruby. It's you know a language if we're here. We clearly enjoy working with it You have access to all the gems You saw the require ruby gems you can require whatever gem you want and in the case of git nub it uses I think the open for gem if I'm right and they actually ship that with the application So you don't need to worry about if it's on the system and you just put it in the bundle and you require it from out of your application bundle so Just to make that more clear and in application in OS 10 is just really a special folder And you can have whatever you want within that folder if you right click on an app and say show package contents You can drill down and see what's in there You can actually with IRB you can Talk to this stuff. I was I Went over the the friend faker thing on my flight into Austin and I used IRB. You just require OS 10 slash coco You say that OS 10 that require framework and you can just start working away with those classes Assuming you're not doing anything with windows and whatnot. It's it's great And so if you want to play around with ns array and see how it acts and or whatever class You can do that and as we saw it's great for fast prototyping. You know if this was a Application we wanted to you know just see how it how it worked out We could use Ruby Cocoa for that and It's pretty good for that and it's Cocoa It looks correct. It feels correct and it's fun. I've got a sort of strong opinion that You know WX widgets and even now Adobe Air They they definitely have a place and there's application. You can make great great applications with them But really if you're creating you want that standard look and feel you really have to use the the packet or the what's available on whichever OS you're on And in the case of OS 10 that's definitely Cocoa and the reason just you know the different operating systems act different Tab orders are different. You know some things are probable and you just really want Cocoa to make sure you get that Otherwise, you know if you're trying to do a cross-platform app What is correct on Windows isn't correct on OS 10 and you know, it doesn't always work out well So why not Ruby Cocoa? That jumped a little bit Performance if you're doing something performance critical You can certainly call into Cocoa and let that rip array rip away at it But you're always going to have the cost of Crossing between the two worlds. So you're every time you go to from Ruby to Cocoa You know, it has to say are you an array? Okay. Now you're an NS array And on the way back. So there's some there's some cost to that and Unless you do anything about it Your dot RB files just ship in that bundle that I talked about so you can say to get enough you can say or any Ruby Cocoa app you can say show package contents and you can see the dot RB file and all their code You may or may not care if it's an open-source app like Ruby Cocoa Get now you definitely don't care But if you're trying to make a commercial app, you could have to jump through some hoops to make sure You know, it's not super easy for them to steal it But you know some some packages just put it out there and say please pay for it and do very little The debugging was you know, just not so great compared to Working with an objective see Cocoa app and I'm not so sure What's going on if they're working on that or if I'm just missing something completely? So what next if you want to do this? I actually recommend learning objective see you really want to learn How objective see works how the the Cocoa frameworks are actually talking to each other and whatnot and to do that This gentleman wrote a really good book that Myself and a lot of people recommend Cocoa programming for Mac OS 10 It's covers objective C or it's all in objective C And it goes through a lot and it's really well-written It's in its third edition third one just came out covers the new leopard stuff There's also a new book from the pragmatic programmers that I have not checked out, but it's in a beta PDF I think specifically about Ruby Cocoa I Imagine that'll be good as well So the future Ruby Cocoa actually has Some competition in Mac Ruby, and I think that was mentioned this morning Mac Ruby is Ruby implemented in the objective C runtime sort of I my understanding is that That's very much like J Ruby in that it's got its own gem repository and whatnot and it's a in that case it bypasses the The bridge and it's talking directly to Cocoa classes and whatnot and it looks pretty promising It's being developed by Apple open source But they are going to fully support it they do claim to build still support Ruby Cocoa they had Adopted Ruby Cocoa and out in leopard, and I don't think they're going to just drop that and for the most part the stuff you learn Mac Ruby right now isn't quite ready for Even like I don't At least with the version that's published we couldn't do that The friend faker because we couldn't actually talk to gems With Mac Ruby yet There's I think in October is in is their next release and it's supposed to have gem support and some other really good stuff So the obvious question is is Mac Ruby going to be in snow leopard and nobody knows they don't you can be talking to Apple And they're really nice people At one time I was at WWDC talking to them about some Cocoa stuff And you can there's just you know humans and you're talking to them And all of a sudden you ask them well, will this be fixed or whatever in the next release and they just turn into these robots Like we did not talk about future products So who knows But Mac Ruby You can see the first two lines is the first one's objective C then Ruby Cocoa and I talked about a little bit You know you have to do this jump through these underscore hoops Mac Ruby takes care of that with a new little extension to Ruby that just said lets them say Instead of having to do the underscore game. You can pass the name of the parameter and it's just nicer. There's no real benefit I Had a this at the last minute, but Tim Berks Spent a lot of time. He wrote a lot of the articles on Ruby Cocoa comm and He did a lot of Ruby Cocoa work and he got frustrated with it with the how the bridge worked So he started and in January of I think 07 he Published Ruby obj see Which it would have been which would be an alternative to Ruby Cocoa and some months after that He got frustrated with that and dropped that and he came up with new new is Lisp with like a Ruby to spin to it and it talks to Cocoa and it does it much like I'm actually not sure how the bridge works or if there is no bridge like in the case of Mac Ruby, but I'm pretty sure that's the scenario where there's where there's no bridge. It's implemented in the VM So thank you. Here's some links That were covered The I'll put my slides and that demo application. I'll check in to github at bright cook slash LSR see Ruby Coco And if we have time I'll take questions Yeah, you can it's You can program all the NS window stuff and you can work with the Layout manager directly No, it'll be it'll be yeah, yeah, because you're gonna have to do a lot of drawing yourself and positioning Yeah, sorry Yeah, so the program you wrote if you write something else that you discovered it was very good You want to take it? Making more the performance use all the Visual stuff and just swap out the Ruby for a bit of scene So the question was could we take that Ruby Cocoa app and Turn it into an Objective-C app with just leaving the views there and you definitely can You'll need to rewire everything up. So an interface builder where I wired up The make friends button in that class you're just gonna have to redo that stuff So but as far as the visual layout goes you can definitely keep that that's Cocoa specific and And the where he's there Think we'll go here and then For like testing and stuff I haven't there are some Some blog articles about doing TDD and BDD with Ruby Cocoa, but I have no experience there No, oh, I'm sorry you definitely can Yeah, I was supposed to talk about that but in the case of that croak app that I showed you There's a session. I or not a session ID, but a API token that haptode app gives you and I store that in the key chain and there's no Cocoa Framework for working with the key chain. So somebody published an Objective-C wrapper around The what they call carbon, which is just their straight-C interface they wrapped it in Cocoa and I included that in the project You just have to tell Ruby that it exists and then once you do that and once it's in your project and compiled You can call it and so you can you can include it straight Objective-C files Or you can actually have if somebody published a third-party framework a good case of this is like Sparkle Is the auto-updater framework and get enough uses that they talk to the framework? It's written Sparkle's written in Cocoa a lot of Cocoa Objective-C apps use it, but Ruby Cocoa can talk to it. No problem and you can yeah define your own whatnot Any other questions Sure, I mean it's Ruby so You can do whatever you want when you're in your when your Ruby codes being executed Whatever you want limited to Well, this is more of a limit limitation when you're talking to Cocoa, but you can't use any of the Threading stuff that Cocoa provides. So there's some pretty cool distributed object stuff that it does All that's out, but that's coming with Mac Ruby that'll all be available So but as far as pure Ruby stuff when you're in Ruby, it's it's Ruby It runs the system library one that that it comes with so if you hand-built and put it in like the user local bin or something It should stay away from that one You could probably tell it to you know relink whatever and if you wanted a different version of Ruby But Any other questions, okay. Thank you. Oh, sorry If you're trying to ship an application that runs on The question was between differences between tiger and leopard Ruby Coco was only adopted For leopard as far as apples concerned So if you're running tiger the only way you're gonna have to manually install Ruby Coco So at that point you get whatever version of Ruby Cocoa you have at the time so Hey, I think we're done. Thank you. That was fun video equipment rental costs paid for by peep code screencasts


We are the L2L project team and with me today is Ann Cleary, head of library services from Dundalk IT, Phillip Cohen, head of library services from the DIT, and my name is Ronan Lynch. I am an engineering subject librarian with the Institute of Technology in Karlo. So our project is a collaboration project and grant. So I'm going to introduce the presentation and then Phillip is going to take over and then Ann and so on.  We have our, give you an update on our achievements and our challenges to date. There are some emerging teams and we will also look at what's happening next, how we are aligning with the framework, etc. And very important to us is the student perspective. So first of all, who we are and what we're doing. So we are three Institute of Technology libraries and we're collaborating together. This is a photograph from the first meeting we had and you see the extended group. Not everyone is there. There's actually two members. So we are just, this is who we're representing. And we are not alone from three Institute libraries, but we're also from different sites within libraries. So we have been unpicking, deconstructing, etc. The framework from day one, but when we go home to our own libraries, we are continuing this conversation with our other library staff and colleagues throughout our community. So we can already see how the framework is rippling on. Anyway, why us? We as library staff are hugely passionate and committed to putting the learner in the center of everything. And we, our library work over the last few decades has become a complex thing. And our institutes have worked independently and our roles have developed independently. So this framework is helping us to kind of put structure to that and evolve in one direction. We realize, of course, that there's great synergies between us and common interests. Even we are diverse, but this has also given us another opportunity that we hadn't done before is work outside what are considered clusters. So it's a great opportunity for us. We say we're looking at the framework through the lens of library staff. Not specific to librarians because librarians are a higher grade within the library world. So we are taking into consideration all library staff. We consider all library staff to be involved in teaching, whether it is formal in front of your classroom or whether it's the informal on the shelves or explaining something at the desk. We're also looking at ways of how this project is going to motivate our colleagues and sustain with our policies and procedures. As I say, we are different institutes and we're looking at our common, what's unique, and going forward. We've already seen the beginnings of us, we have created within our own, our collaboration a embryonic community of practice and our vision. So we want to embed and champion a professional framework that addresses our complex and our differences and for those who are working in their sort of isolation in their institutes. So in the end, it better serve our students and our institutes. Quite simple, but that's our plan. Our aim is to further the dialogue between LIS, Library and Information Studies and pedagogy. We have realized we've been in the rooms with other teaching staff and they're having the same issues and difficulties, but we haven't been having the same conversations. But this project is putting us all together, which is really useful. Like I say, we've explored, unpacked, unpicked everything you could say about teaching in libraries and we create enthusiasm and we hope to develop strategies that further establish the role across Ireland and we do see the framework as providing the foundation to achieve this. Again, you can see, I'm going to hand over a film, but this is another photo of our steering group meeting and you can see how we're all thriving on the project. I'll just hand it over to Philip. Thank you very much. Can we meet in the market? Okay, we are the excited librarians. Okay, very, very, very quickly. Our approach has been to cultivate these project teams or as we call them triads at each site. These are becoming peer support groups to promote the sustainable engagement with the project and with the framework and we do intend to establish further triads involving further groups of librarians within our own institutions and other institutions. More happy pictures of happy librarians, communications, okay. Communications plan has been developed and it continues to grow and evolve. We have weekly conference calls. The three project leads in each of the sites. We have weekly conference calls and the project teams meeting face-to-face regularly at least once a month and we also are using Free Camp, which is project management software. We have engagement days arranged one for 10 days time and another in August at the end of the summer and this will be for library staff across the higher education sector and we are engaging with local HRs, serenity and development and learning and teaching personnel in our own institutes and also across with the steering committee. There we go. We're there, we're there, we're there. Communications. We have leaflets, pull-ups, banners, all sorts of things. Social media of course and we've attended a number of events and we've sponsored a prestigious event in the UK for library staff who teach. Training and development, we have a training environment plan. We've identified areas of need based on feedback and data from our peer groups, from our triads and we've organized lots of onsite training and we have more in the pipeline. Steering committee, we see the steering committee as very important element of the project. It ensures a wider focus, it keeps the focus, that focus on professional development rather than going off on other strands. It's international in nature, we are looking for an independent chair. We'd welcome any suggestions from the room please. And the steering group currently includes training and development expertise, teaching and learning expertise, library staff, professional body representation and of course students. And there's another picture of the steering committee. Student voice, as Rhona has said, student voice is very important in everything we do. We contacted the academic unit MLIS, Bitter Jargon is the master's in library and information studies. It's what we call library schools. There are two in Ireland, UCD and Dublin Business School. We contacted them, we've identified three student reps and they are sitting on our steering committee, very important members. We're also in process of planning student focus groups in the coming academic year. Financials. Like the previous group, we were probably slow getting started but the budgets have been allocated, expenditure is ongoing. This is for some of us, this is our first project that we've been involved with and it's been a very steep learning curve in sorting out finances with our own institutes. We are there now, we've got there and as we gain momentum we do, expenditure will increase and we feel that we are on track. Very important, what have we done? Where are we? The achievements. We've achieved a lot in a very short time. We're learning as we go and we've identified multiple tracks to the project. We are enthusiastic and committed, we're the enthusiastic librarians. We are touching on emerging themes and concerns in the wider library world and we have already generated substantial interest from third-party libraries and organisations. Achievements to date, VAPAC slide you'll see there, I don't intend going through it and more achievements there, again I don't intend going through the detail. Finally, this is how we've helped to spread the message and to get the word out about the project with our hand over to Anne. I too am digitally challenged. So, we have a lot of slides and I'm kind of concerned about time so I'm basically going to just talk to you and I'm sure you haven't asked me loads of questions anyway. So, obviously when you do a project like this there are lots of things. Isn't it Donald Rumsfeld who had the unknown unknowns and the known unknowns? So, to think about the things we anticipated that actually would take time to get ourselves off the ground, some level of apathy and basic reluctance to actually get engaged with things, that it takes time to actually build consensus and to actually really understand what a project or really what the framework is about and all of those things like time, getting people bought out and actually we also realise that we have a real tendency to get focused on information literacy as opposed to professional development. The unanticipated things that have come up is I think the levels of complexity around some of that so that includes just the fact that what works in one of our sites doesn't necessarily work in another in terms of dealing with administration, the multiple forums, the procedures, internal industry relations issues, the cultures and so on. I think there are issues which I'm going to touch on again around organisational and institutional approaches around professional development itself. A real struggle around actually acceptance and identity and a particular struggle for our teams and for our staff around the use of the word teaching which is kind of something we haven't quite actually anticipated in the same way. One of the other things that happened and one of the reasons why more people aren't here today is that while we were expecting a new library system upgrade we weren't expecting a completely new library system so that actually added a whole level of work that we hadn't actually planned. So just to come up on what we see as emerging. So first of all in relation to professional development and I would say that we think there's a level of shyness around talking about our professional development. People are really happy to talk about work but actually say, okay, this is my professional development, here's the time for me to talk about it. It actually is something new for us to do. Obviously we all work in institutions that are committed to the development of people and so on but many of the approaches that we see are perhaps maybe more mechanical models than the holistic ongoing and I would say more sustainable approach that's suggested by the framework. Some of the language doesn't resonate and I'll come back to talking about that word teaching in a second. It's also the case that the process for us as Philippa said actually is really encouraging. The people that we are engaging with in our teams are really enthusiastic about it. We can see lots of things happening and it's giving us real opportunities to position the libraries and to actually remind ourselves that we are part of the teaching function and that is why we are here and that is why we got the funding and it really gives us a lot more confidence to kind of step into that space. It's also the case that learning and doing new things is challenging. So people have a level of anxiety. I would say when we start to look at the framework first it's almost like, oh, a little bit of deep breath. Are we going to do this? How are we going to do it? Some of the terminology we think just doesn't really resonate that well. As librarians, reflection is not actually inherent to our practice. It isn't mentioned in the other library related professional development frameworks. So all of this is therefore quite new for us. However, we are going on and again this is a photograph from one of our project team meetings. I'm just going to turn now to the student perspective. So first of all it's obviously early days for this. We had hoped to have focus groups but we then had to get ethical approval and that took more time and then by the time that was ready our students had exams so we also decided to wait until the new year. But we actually have, as Philip has mentioned, three students on our steering group and we asked them to actually start capturing for us what they saw as the impact of the project which I think we've documented in the report we sent in but also as you can see on the slides that are here. So we're really hopeful that they will bring a different perspective and remind us of what it is that we're doing and actually come back to actually help us also to influence the new generation of librarians that are coming through about perceptions around their role and the formation of library practice. And this slide is really about alignment and obviously professional development is part of all of our institutional plans. We really see that this is an opportunity for L2L to influence professional development of libraries in terms of their strategic positioning in the institution and in terms of building up also our departmental strategies and obviously we're part of many projects that are going on and the kind of issues we're finding are also we suspect in the other projects. Within a disciplinary context when we look at the professional development framework we've been trying to I suppose compare and contrast it in a very initial and one level superficial way as yet with other disciplinary or with other professional development frameworks for our librarians. So for example it's interesting for us to know that in the UK when you contact the Higher Education Academy they have about 400 librarians who are also fellows and it's also the case that we've discovered that the Higher Education Academy and the professional body have started we haven't been able to actually clarify the extent of where negotiation has gone in terms of kind of mutual recognition of the awards process for people who are members of the professional association and therefore also the Higher Education Academy award process. In Ireland we're looking also with what we call the framework from the library association and CILIP and again we're also looking at the ACRL which is the Association of College and Research Libraries and what we would say in general is many of these are under review and that there is a trend towards broader wider conceptual issues and that reflection is an emerging topic and we therefore think this really helps us in relation to L2L. We'll obviously come back to this. We see that the issues going forward is engaging more people actually getting people to I suppose use the framework evidence that see how it actually works in a real life context but also to look at the sustainability issues because we think what we're really talking about is laying the foundations of the two-year project and for us that seems to operate at the following levels. First of all there's something about culture of scholarship for us and confidence for us to actually step into that space as librarians. There are issues around local institution and sectoral policy around development and professional development for people adding the library perspective to additional offerings development of communities of practice and reward recognition and voice and that might be for example looking at digital badges that we started to do or else looking at accreditation and recognition from the forum and from the LAI and that's us. Thank you.


I'm happy to introduce our next presenter, the Moore-Pierre, presenting our lessons from a computational reproducibility study. Okay, I'm sorry I didn't address it, but yeah. Thank you, hi everyone, good afternoon. I'm Lee Moore-Pierre, I'm from the Institution for Social and Policy Studies at Yale University, and I'm presenting today on behalf also of my co-authors who are PhD students at Yale, Simone de Paulis and Nika Tony. And before sharing some lessons from our study, I'm gonna give you a little bit of background and tell you a little bit about the reproducibility checks that we do at ISPS, and I will also make these slides available after the conference. So I put the slide up for context and definitions to orient us to where we are and what I'm actually talking about. So I'm talking about computational reproducibility. Do you get the same output with the same data and the same analysis? Earlier today, we've heard this referred to as outcome reproducibility or non-deliberate irreproducibility. So I'm talking about computation and I'm focusing on code. This is also a nice chart just to kind of remind us about the path of where we've been with, I think, open science, questions of access and questions of reproducibility as kind of the next frontier. So really quickly, ISPS was founded in 1968 as an interdisciplinary center at Yale, meant to help the social sciences do policy and other applied research. ISPS since 2011 has decided to publish data and code and to ensure before doing so that the data and code are usable and understandable and that the results are reproducible. So I'm talking about an internal process for reviewing the research compendium that includes the data and the code. Most of the research that we handle is experimental, including field experiments and survey research and also including, I'll mention the article that was mentioned yesterday in the talk on internal validity, the Gerber-Green-Larimer study on get out the vote. So we got the data and we got the code if you're interested in that. So why do we do that? We do this because oftentimes when you use other people's data and code, they're not really fully usable or understandable and this causes friction to the researchers who want to use this material. So as I said, I'm focusing on code and just to explain further a little bit, these are scripts used primarily to analyze data and they are mostly in R or Stata in our case. So what we see that oftentimes happens with code is that most of the time it has some bugs and some errors, these are unintended, it causes friction and it does not, in our opinion, reflect on the quality of the research itself. So research or friction is a function of the skills of the code producers and also of the code users, the consumers. When the code that is released does not clean and we're not necessarily talking about professional standards of coders but just clean code. It makes it difficult for other researchers to use. So the main point of this slide is really just to kind of highlight that researchers are not coders and maybe we shouldn't expect them to do everything perfectly the same way as developers would do. So what do we do about that? We do code review and when we talk about code review, we're talking about maximizing the research utility. So at ISPS we have a team that supports the researchers in optimizing data and code that we share for maximum usability. Again, this is an internal and technical review of the code. We do this so that we can help realize the full potential of open researchers to help boost the resilience of open scholarship and to contribute to new research. Okay, so how do we do this? As I said, this is a technical review. Our goal is to make researchers research outputs usable, understandable and fair compliant. So generally we do a bunch of data curation that I won't talk about today but focusing on the code. What we do is we either fix the problem or suggest a fix for it or suggest an option for the researchers to fix the problem. To do this, we use custom-made software that we call YARD and it guides the process. It's an iterative software that allows some iteration within the system to talk to the researcher and fix some of these problems. At the end of the review process, we generate a detailed, what we call an author report and it includes those other sections that I mentioned, information about the files, the documentation and the data, but today I'm focusing on code. So focusing on code, here's an example of the feedback that an author might get. What worked, what didn't work and what exactly specifically we found and what we mean. The, again, the ISPS team works with the authors to remedy the errors before we publish an archive with the ISPS data archive. So what is made public in our archive has already been tended to. As I said, this is an iterative process that results in better materials. I'll mention a couple of other things that are important. The ISPS team intercepts these materials at various points in the research lifecycle. Ideally, we wanna see them as soon as possible, even before submission to a journal. Another great time to do that is in R&R, but in many cases we find, especially recently, these materials have already been deposited or published with journal repositories and we just work on the copy. So really quickly about our study, we took 26 author reports that were published between over a period of two years. Again, this is the first path at running the code. We conducted a structured content analysis using a coding schema that was developed by the Odom Institute and we looked at the comments that were made about the code. We then did some descriptive statistics and what we find is that about 31% of these author reports include comments about code execution errors. So what do we mean by these errors? Typically, these are small errors, as was also mentioned in previous presentation. These are things like typos, file paths, updated packages that are not updated. We also found in about 38% of our author reports that there were some output discrepancies that we flagged for our researchers. Sometimes they're minor, oftentimes they're very minor, like rounding errors or some manuscript errors like transposing table columns and things like that. Sometimes there are aesthetic differences that have to do with colors of graphs and things like that. We work with our researchers to fix these issues again and to produce a better replication package or research compendium. So I guess in summary, we expect to see some noise in the code. We think the code review helps reduce these kind of friction for future users and we think that that enhances computational reproducibility. So for my last slide, okay, I'm good on time. I just want to offer a few big pictures of observations or thoughts. Both from this particular study, but also from basically working on this for 10 years having experience doing this sort of work. I guess the first thing I'll say is that I think that these are sort of expected growing pains of open research. We're moving from access to usability. I'm not saying that we solve the access problem. We still know that in many cases we don't get data or code from authors, but when we do, we have a usability problem oftentimes. So I think this is a work in progress. I think growing pains can be expected. I don't think it's necessarily the researcher's fault, but I think that we need to think about it, sort of have them think about it in a new way now that they're expecting that they're going to be sharing their materials. The second point is about reducing friction. So again, making these materials more usable and more understandable. So we need to imagine how these materials will be used and what the problems that might anticipate the problems that future users might have and try to remediate those problems if we can ahead of time. Specialized skills. So domain experts are researchers. They're experts in their domains. They don't know everything about. They're not professional coders, as I mentioned. They also don't know data curation or data management as experts do. So thinking about working in teams and with other research support functions to help make the data and the code more independently understandable, more fair, and do that alongside our researchers. And finally, shifting the burden. So we have a lot of these research compendia, a lot of these packages of data and code that are already out there. If any researcher that tries to use them will see these problems, will encounter these problems, they spend, there's a cost to that. They spend time cleaning it, understanding it, what's going on. And I'm thinking that maybe we wanna shift the burden from researchers to these more professional support function, community or institutional function. And we've heard today about several also of those to enable researchers to make more seamless use of research outputs. So that's what I have for today. Thank you. Looking forward to questions. We have time for about two questions. Bile path management is the bane of all of our existences. But one question I had is sometimes the ideal is that we wanna just have the replicator just kind of point and click and get the results. But sometimes when you have these little errors that forces the replicator to really get kind of elbow deep into the code and really understand what it's doing. And you learn something from that. And so I just, I don't know, sometimes that we can kind of worry about automating things so much that we're not really kind of understanding what the replication's doing. So anyway, yeah. Yes, so the question is, I guess, is there value in encountering these sort of errors and dealing with them? And so I'll just say that I know that our materials are used in teaching a lot. And so I think, I guess two things. One is they're never gonna be entirely error free as time goes on, we will encounter more problems. And so we also have a paper on active maintenance where we sort of try to say you gotta come back to these things every couple of years to kind of see if they still work. So I think there are gonna be these issues. But more generally, I think the main value really is just that I think is better than just having an automated code run is to allow the researchers to really open that code file, really look into it, really look to see what's going on, whether and hopefully not encounter errors that will frustrate them and stop the code from running. But yeah.