So, hi everybody, I'm starting the recording and thanks for being here for this new Jenkins information. A quick follow-up on the last discussion. So first regarding the infrastructure sponsoring, we are still in the process to get sponsored by Amazon. So right now, before working on CID and Jenkins.io, I'm just waiting for the sponsoring to be officially enabled. So we can start talking about that. It's the same for Fastly. So the last discussion that I had with Fastly is we have to sign a new contract and they should send me a contract. But right now, I still don't know the bandwidth that we could have with Fastly or what would be the terms of the contract. So it's still ongoing and still on discussion. Regarding the Azure accounts, we managed to be around 6,300K for the months. And so the billing is closing next week. So we should be around 7,000 for this month, which is way better than what we had last week months, which was around 17,000 for the Azure account. So we managed to reduce the cost, but we still have to do better right now. Regarding the discussion that we had last week about CID and Jenkins.io, we mentioned some work that TeamJet did with the Packer image that it was to create a very small virtual machine image for the Packer image to speed up the provisioning of those Jenkins agents. We spent some time to work on those and we are almost ready to put that in place. The last thing that needs to be done is just to create new credentials specifically for that and then configure CID Jenkins.io. So this is something that should come in the coming days, and otherwise we did not spend more time with the G-Cask configuration for CID Jenkins.io. The main reason to that is we are still waiting for Amazon sponsoring to be enabled. So right now we don't spend a lot of time on CID Jenkins.io. We also mentioned last week that we had to renew Gira license, this is done now. So we should be able to upgrade it again. This is something that you have to work on in the coming weeks. That's all for the follow-up. Do you have any questions regarding this? Nope, so I guess we can start talking about the agenda items. What are my notes? So the first item is the Update Center and GitHub integration. Who bring that to the table? Was it Oleg? Might be, but I'm not sure. Was it recently? Just a second, I'm opening the notes. Oh, yeah, it was a plan for the previous meeting, I believe we discussed them and the changes are now integrated. Okay, so one need to be done for this. Those changes were the ones that allow us to do using topics to manage the labels on plugins.jankeds.io. Is that right? Yeah, that's right. So I'm not sure why it's on the agenda for this meeting, because it was about putting for meeting two weeks ago. We have some issues with the transaction consistency. So just a second reference a little bit of an issue for that. But yeah, overall it works. Our main problem is eventual consistency, because once you set the label, it takes up to several days to have the plugin site updated, which is definitely not sustainable. We need to find the reason and improve that. Okay. But yeah, it's a separate topic. Okay. So just to be sure, the next item in the agenda meeting are still old ones. I don't know if Alex wants to talk about duplicating Windows 2012 and the Windows Asia agents. Yeah, so we currently have Windows 2012 VM set up for Azure, and I was wondering what the consensus is on deprecating those. We have Windows 2019, and it's a smaller VM image and faster. So I would like to deprecate the Windows 2012 instances and moved only using the Windows 2019. To me, I thought that you were, I mean, I thought for me that we were already deprecating those old Windows machines. So I think you can just remove the configuration from CIDA to the value. Okay. I will take care of that. And regarding Windows Asia agent testing. So Mark, I think he's been the only one so far that has been doing some testing. He's brought up a couple of things that I'm going to look into. So I don't think we're ready to move forward to general availability. Let's all continue looking at those issues. Thank you. Yeah. Now, now the issue that I had flagged there may not be a general purpose issue. I don't know how many other plugins mandate that they must have command line get installed on the Windows machine. Certainly the get plugins have to have it. They can't run their tests without it. But others, I know that we use JGit throughout the CI Jenkins IO infrastructure. So we've avoided installing command line get on a number of machines as a result of that choice to use JGit. Yeah. I think it's a, I know of other plugins that do use get command line. So I definitely think of these be resolved. So I will look into it for sure. All right. Okay. The next point is regarding the Jenkins improve for Docker builds. Jim, do you want to give a update here? Yeah.  And I think Mark put that down on the governance meeting this week, I think on Wednesday. So I guess tomorrow. So that's good. I'm still waiting on terms of sheet, term sheet for power resources. But once we have those, you guys should have full access to pull those into your infrastructure. In terms of the PR, that's still open. I haven't done anything with that. I guess we kind of really need to wait for these terms of use sheets to get you guys signed off and get you guys access to start testing the whole PR that I put out. Okay. Just for the context, so Jim, James sent us a bunch of cheats that we need to sign. And so basically in the past, what we did is it was always on a personal basis where someone signed that document. And one of the reasons to move to the CDF was to have a legal entity above us. So we are not personally responsible for that anymore. Obviously, the CDF, I think, is not really yet to sign that document. So the thing was to discuss tomorrow during the governance meeting, should basically should I sign the contact or should we ask someone to the CDF? But yeah, in this case, in this document, I'm not really worried to sign it by myself. So yeah, we are just waiting tomorrow for the release. Could you please send a message to the developer mailing list? Because if you expect anything to be voted on at the governance meeting, there should be a deaf list discussion before. Okay, I can. In this case, it might be enough to just discuss it with the Jenkins board, even without voting the public mailing list. I'm not sure what would be exactly the objective there, but yeah. Yeah, so Olivier, if you're okay with it, I can do that or you can do it, whichever you wish. Yeah, if you can send that, if you can sell the discussion on the main deaf menu, that would be really awesome. All right, we'll do. It will help a lot. Thanks. That's really it for me, for the Jenkins infrastructure Docker builds. We, you guys, we talked about, I think briefly, we have access to power on either on Amazon or Microsoft's cloud service, or not power, sorry, ARM, ARM, sorry. To be honest, I didn't check that normally, I think we should have like, we should have ARM resources, but I forgot to check this. So on Azure, they only have ARM 64, well, they have other ones, but they're part of this IoT Edge product, which I've tried to figure out if you can run like general workloads on and there's no clear documentation on that. So I'm still trying to figure out, I may contact someone via the support and find out if you can just run general like Docker type workloads on on there. Okay. So you, the, the main thing though, is they have ARM 64 support, right? And that's usually the common one going forwards, right? The Raspberry Pis and other ARM platforms, right? It's, I haven't really heard that many people still using ARM 32 or I don't know what the actual name of it is. ARM v7 32 or ARM 32 v7, that's what it is, ARM 32 v7. Whatever we get, it would be an improvement being compared to the current situation. Because right now we don't test with ARM at all. Okay. So anything's really improvement. And I think, I think the Docker like official pipeline for like official images, I think they only have access to ARM 64 too. I don't think they have access to ARM 32. I can double check that. But it might be only 64. So if we even if we get 64, it'll be good improvement. Yeah, I think we need to figure out if we even need to support ARM 32. I don't know how many people would be using it. Okay. That's, that's one thing we should look at too. How much effort do we really want to spend on an ARM 32? Yeah. We're not officially as far as I understood it supporting any other 32 bit architecture, right? We've, we've deprecated wind 32 bit windows, haven't we? No, we didn't. Oh, we did not. Okay. So our documentation basically says nothing about the business of operating systems we support. So I still have an action item to create a job or at least documentation page to document it. But yeah, right now, if you can run Java somewhere, you can expect that Jenkins runs there, which is obviously not exactly what would happen on embedded platforms. So for, and also this is more for like Docker agents. Not for running the master on that platform necessarily. So I think this, the support is a little bit different based on that. As well. Now going forward, we did talk about at one point in the platform segmenting that we would not be supporting wind 32. With the new installer. The new installer is only a 64 bit. So that, that will come up at some point for windows at least. Yeah. And I think that's quite reasonable. You, you just described it. That would be the master running the windows installer. That seems very reasonable to me. Jenkins Jenkins running in a 32 bit world is. For agents, it may be interesting. I think it's less interesting. For masters. Yeah. Yeah. Yeah. Just changing. Constroller doesn't remove the support in principle. Because one still can download the word file and get it running. Sure. It just won't be out of the box. So personally, I'm not that concerned about windows 32 state. I do know that some people still don't know that. For arm and for the new platforms for which we had the official support. Even if you want to do that, you should rather do it increment. That's all I had to say for that. It's good to know that we at least are moving forward to that. Okay. Sounds like the net thing that you have to investigate. Is there any other topic that we want to discuss? So I can bring mine. Mark, you're muted. Yes. I wanted to talk about CI Jenkins that IO monitoring, but I'll happily defer to after whatever topic you have. Mine is not a long topic. I just wanted to summarize what I've learned and make a proposal. So yeah. Feel free to, feel free to, to talk about the monitoring and then I'll use my topic. Okay. So I'm going to go ahead and share my screen if that's okay, because I, it'll help me frame the conversation. What you should, let's see which screen are my sharing now. What do you see on your screens, everybody? Good. Good. Oh, good. Okay. So you see the right page. Okay. Super. So I've spent a few days looking at, at monitoring and trying to understand our monitoring. And what I realized is we've already got just about everything we need conceptually to do a good job of monitoring my proposals. Let's take the systems and the concepts we've already got and extend them. So data dog is a world class monitoring platform. We get it for free and it works great. Let's just keep using it. Yeah. Piece of work. My job. My, my, my only question is regarding because I saw that data dog made several updates recently. I think someone on that. I started working on the data. Because in the past. It only ship really few metrics. So it was not that useful. And so I started investigating primitives. So on the release that's here, the gene is that I am using primitive. So if you want to have a look with the kind of data that you have there, I think the main difference is that the data, the plug-in is just exporting. Specific metrics. So I think that's a good point. I think the main difference is that the data, the plug-in is just exporting specific metrics where the, the primitives it's using the, the matrix plugin or something like that. There is one, one specific plugins that export a lot more, more metrics. I can, I can, I can find the plugins after the meeting. Thank you. I hadn't, I hadn't thought about Prometheus. I think it's valid to consider. Consider my thought right now was, I think we'll get faster results and better results quickly. If we stay with the solutions we've got, rather than making a shift of solution, I, I'd actually started my own monitoring system on my local network and was using it, but RedEye's data dog is worlds in a way better than anything I might consider recreating. It does amazing things in terms of dashboarding and measurements. It's, I'm quite impressed actually coming from a business, prior to the current employer, I was working for a company selling those kinds of solutions and data dog is an awesome competitor in that space. So don't, don't get me wrong. The data dog is really awesome. And I think I sent you an invitation to the data dog account. So you should be able to, to maybe create dashboard or look at the monitoring, maybe do some other thing. We can organize a session specifically for the data dog. My, the, the reason why I deployed the primitives plugin was because I was missing some specific metrics, which was provided by, by the primitives plugin. But the main difference is that those metrics are exported to, to a graph and a dashboard that you have to maintain yourself. And obviously it's time consuming. If you want to be sure that the service is always up and running. So right now it's more for thirsty purposes, but yeah, I would be curious to see how the data dog plugins evolve over time. Great. Okay. Yeah. So one place where the data dog plugin actually could offer something is this second item, the canary jobs. So this was a concept that Tyler Croy and, and Olivier had started in using what, what are listed as infrastructure acceptance tests. They're set right now of four or five. And then there's a, there's a lot of data dog tests that check very specific thing should work end to end. And I think that concept is a good one. We should teach those tests to notify data dog so that they can, they can then raise an alarm if they start failing so that we have a relatively few in the hundreds and hundreds of jobs. Those relatively few will raise alarms to us so that we know that we're going to be able to do that. Okay. That's one. I'll, I'll negotiate. I'll work with you, Olivier, to try to get it. The other is that in choosing which checks we should make, we've already got 13 jury tickets based on past outages. And I think that's a good beginning. So my thought is I'm going to create an epic. If we don't already have one that tracks. And then the last and actually probably the most important one is be sure that we've got more people looking. And that I think is probably the, the single most important thing. The other things will automate, but human beings can do an awful lot to help us as we get surprises and learn how to monitor better. And that was all that I had questions or comments. Yeah, my just comments. I don't know if you saw that there is a Jenkins, a histogram. Where we automate checks. Basically we use to automate those checks. So yeah, feel free to have a look at this. It's easier to first look at the dashboard, create those check manually and then export those checks. Interform. So we have a way to, to share those. And I also share the, And I was also sure that the plug-in, so when I said, so there is one plug-in called matrix that export few, few, few data house. And so this is the one that I think the primitives plug-in is using. So basically the primitive, so the primitive plug-in is just a way to export those data, those metrics to, to, to graph enough for example, right? So there is a bunch of such plug-ins and one of the issues they try to solve is to bridge pool monitoring services and push monitoring services because there are some periodic jobs which collect statistics and prepare that on demand so that we can serve the data quickly to any service. Thank you. So I would get it, I would just turn my screen as well. I think that means I have to stop sharing. Okay, go ahead. Can you see my browser? Yes. Perfect. So basically with the recent, with the recent issues that we had with a package of Jenkins.io, the update center and the browser Jenkins.io, I spent a little bit more time to investigate different solutions that we could put in place to reduce the load on the package of Jenkins.io. So right now we have one machine located on the Amazon account and that machine is hosting so the three services that I mentioned and more the, the, the, the packaging jobs and tasks and so on. So that machine is, has a lot of things, is doing a lot of things and also is quite outdated because neural brain is not maintained since years now. So we have a whole version of Python really and so on. So I try to find ways to, to split the different services running on that machine on different container services. But obviously the main challenge that I have right now is they are all kind of interconnected. So this, the, the screen that you see right now is one of the services that we could use to replace mirror brain. So the idea here is that we have neural bits that contains all the, the files that we want to provide through the mirrors and also basically you can just browse the files on it. So for example, as you can see here, I just synchronize one of the mirrors. So there are two possibilities. It does, we have mirrors available for specific files. So let's say for example, I click and read that and just select one. Oops, this one is not working of this name. Take a different one. So if the file, if the file is, so basically what mirror bits does, it's create a hash of the file and if the file with the correct hash is available on one of the mirrors, then it gives you an opportunity to download directly from a mirrors close to your location. And if the files is not located on the remote mirrors, it just gives you an error. So it does not work. So right now I configure my mirror bits with six mirrors, as you can see here. So it's only working on HTTPS right now. So we can really enforce this, for example. And it's really easy to deploy. The main thing is if we plan to use mirror bits, we have to modify the script that we use when we release a new Jenkins version in order to push the new artifacts directly on mirror bits. And obviously then we have to update the different mirrors. But that's one of the works that I did. And mirror bits also provide views. So this one is just provides all the mirrors that you can use. You have another one that you use just as that. So if you just put stats at the end of the URL, you can see how many times I downloaded this specific packages. And otherwise you have a list of the different mirrors. So this is one of the services. There is an open PR on the repository Jenkins.access.charts. So right now I'm not sure yet the way we push the data on that service. So either it's a pool based where we fetch the data from a remote mirrors, or we push the data directly on your objects directly when we release. So that's the main thing that I have to figure out right now. The second service that I work on is a way to deploy more mirrors. So just a hand chart. Basically what it does, it just run on a regular basis. I see commands to download from a remote mirrors. And so we can just have more mirrors. The main reason why I started working on this is because right now we have archives at Jenkins yet at org running on the rex space accounts. And then we need to move that service somewhere else. So initially I thought that this could be just a simple mirrors. And then I realized that archive has a lot more data than just mirrors. So I still have to, I probably have to deploy and provision an Azure disk and move all the data on that Azure disk. So I would probably move archive to Jenkins yet at org to Azure from rex space. One of the other services that is also running on the current release mirrors mirrors to Jenkins.io is repo. So this is a different service that I also started working. So basically in this case, we just have ways to So in this specific case, we just generate a website for reddit.tpm and sues. So people can add those packages directly into the operating system. But I still need more time to test how it's working, if it's working. But yeah, so basically what I wanted to share is that there is some activities about the way we deploy package at Jenkins.io and mirror and mirror brains and mirrors the Jenkins.io. So if you have any inputs or thoughts or suggestions, I think it's the right time. So Olivier, you mentioned repo and I thought I saw what looked like an Artifactory image. Is our Artifactory instance at all being changed to? No, no, no, sorry. So I mentioned repo, but I want to say package at Jenkins.io. So repo, so we are not changing the Artifactory. This is just the maven repository that I deployed in the release environment. So I can just test and it was easier to deploy than Artifactory with the setup that I have. But this one, I mean, we won't change repo to Jenkins.io. It's mainly package at Jenkins.io, mirror at Jenkins.io, and the update center, but regarding the update center, I'm not there yet. The main reason why it's not easy to work on those is because we have quite a lot of scripts that are either uploading or downloading packages via R-Sync or SSH with CRUNJUB and stuff like this. So before deploying and for example, before switching from mirror brains to mirrors, I just wanted to be sure that I don't break or lose data in the demigration process. I just have another question. So if you don't have any question on this part, I would be more interested by this case more about Alex Hirm. So I had a look to the release environments. So I fixed a few things. So from the release process part, sorry. So from the release process part, I had some resources issues. So I just deployed bigger machines. So as you can see, it goes from three hours to release Jenkins to one hour 35. So right now it's working again as expected. So if someone wants to test the output generated by this, I would be really happy. But the more importantly is that I worked on the packaging part, which is here. And so in this case, I don't remember, Alex, maybe you don't remember. I don't remember if Windows artifacts are signed or not, or maybe what would be the best way to verify this. Let me take a look because I think you can, if when you download the MSI, you can right click and look at the properties and they'll tell you whether it's signed or not. Okay, sorry. All artifacts are likely signed. On the new release process? Yes. This is not KK's release process. This is the new process. So we just need to verify. I'll take a look. I have a VPN set up so I can look at it. So everything is located in the artifacts. Sorry, everything is located in artifacts. And otherwise, the main thing that I've been working, so because we don't have access to the codes yet, I'm currently working on the publishing part. And one of the things that I'm really relying on is, instead of using our SSH to publish artifacts somewhere, I'm using Azure Blob Storage. So I can just mount the Azure Blob Storage directly in the release pipeline. And so I just move files from here to there and so on. And it's also the same Azure Blob Storage that I'm using in the other services. So I can mount the same files in multiple locations. And so it's really simplified the way we are publishing artifacts, because as soon as, for example, as soon as the artifact is generated in the Jenkins instance, it's copying the Azure Blob Storage. And then mirror bits can use the same storage. And so the part is directly available in mirror bits and also directly available in a package, in the package. Jenkins as I hope, for example. So yeah, that's what I'm working on right now. Yeah. Otherwise, I think I covered all the things that I wanted to show you. So if you don't have any more questions, I propose to stop here. There is one last thing, sorry. So Mark and I, we do a small session about configuring SSH access and using the VPN, other Jenkins incorporate projects. So if you are interested to participate, it is free to say it. The idea is we need to do some knowledge transfers. So to take some time to ask questions and to be able to answer those questions. Thanks, everybody, for your time and see you on our scene.


This is stock number 9818. We are here at Summit Automotive in Fond du Lac, Wisconsin. You're new and used SUV headquarters. Remember we are the guys with the trucks and 4x4s on 41. More importantly the trucks on 41 and today we are checking out this super clean 2000 Yukon Denali. This vehicle has the 6.2 liter V8 motor which comes with the Denali package. Onyx Black is the color. We shoot all of our videos in 1080p 60 frames per second so if you have HD capabilities on your computer tablet or smartphone device turn them on now because they are it's like you're right here looking at the vehicle with me. Very clean down this side has the factory running boards. Comes with the 22 inch painted alloy rims. This rim is in excellent shape no scuffs or scrapes. It has Bridgestone Duler 285 45R 22 tires with lots of tread left I'd say close to 70% of the tread on these tires. Driver side front fender is in excellent shape didn't see any dents or dings on that. The LED running lights the HID headlamps the chrome trimmed grille. Very nice and clean. The hood is an excellent condition I didn't see any dents or dings on that. Front bumper is in nice shape as well. It does have the front sonar or front sensors I should say. Part of the forward collision warning system. Passenger side fenders in nice shape. Passenger side rim is in okay condition. Pretty nice has couple tiny little scuffs on it. I don't know if you can see them right there but nothing major. As you go down this side of the vehicle you can see just how clean the body is how mirror like and glass like that paint is. We take these HD videos so if you are far away or even if you're close by and just cannot make the trip down you can still see the vehicle hear the vehicle and have confidence in what you're looking at before you even get here. Very clean down this side of the vehicle. This back rim is in nice condition as well. No scuffs or scrapes on that and the back tires have just as much tread as the front tires. As we come around to the back of the vehicle you can see it does have the backup sensors. The full towing package which includes a receiver hitch four pin or I'm sorry seven pin wiring. Tailgates in nice shape no major dents or dings on that and it does have the power lift tailgate also has the raised glass as well. It does have the receiver hitch cover right here which is a nice shape no cracks or major blemishes on that. Back storage area is very nice and clean. These seats do fold down and they are powerful down and they go down very nice and fast and they also come back up very nice and fast as well and this rear gate goes down just by pressing that button there and as we come around to this side of the vehicle just as clean as passenger side only thing I noticed one tiny little scuff on that rear quarter there other than that very very nice and for full disclosure this back rim is in excellent shape as well no scuffs or scrapes on that and both driver side doors are in excellent shape. It does have the built-in directional signals the blind spot indicators in the mirrors and as we check out the inside the Denali package gives you the luxurious black leather interior with the white stitching no rips or tears on that leather no major wear both these seats are heated and cooled with factory floor mats in the front power windows power locks power mirrors these mirrors also power fold in and power fold out memory driver seat and the Bose sound system this one comes with the auto headlamps auto turned-out four-wheel drive factory brake controller the stability control power pedals and lane departure assist has the power tilt and telescopic steering wheel audio controls on the back of the steering wheel and as we hop inside you can see that this vehicle has 55,795 miles instrument cluster is nice and clean steering wheel is heated and leather rack no rips or tears on that Bluetooth audio controls on the right cruise controls on the left as well as your heated steering wheel and forward collision warning controls this one comes with the six-speed automatic transmission GMC IntelliLink system has AM FM radio also has the factory navigation system on it this is also where your backup camera shows up this has a hidden storage cubby right there with a USB jack in it for charging things dual climate control they're heated and cooled seat buttons and the passenger seat and floor mat are very clean as well no rips or tears on that seat you get Denali stitched into the headrests power sunroof up there right here we have the controls for that sunroof as well as the rear gate homelink system for your garage door security systems lane systems it does have on-star and SOS assist on there this one also has the wireless cell phone charge pad which is really nice just put your cell phone on there and they'll charge as you drive and as we go into the back seats here it has the second row quad seating no rips or tears on these seats both of these seats are heated you do get the latch child safety system for your car seats this one has the factory GMC blu-ray player and say no blu-ray disc inserted and back here you have your heated seats rear air controls and there is a power point right there believe it's a 110 volt 150 watt plug-in back carpeting very very clean no rips no tears back here these seats do fold down and up to get to that third row that third row is very clean as well no rips or tears back there and just a very clean car inside and out we'll take a quick look under the hood I would personally like to thank you for checking out the video today hopefully from this HD video you will have been able to tell just how clean this Denali is inside and out all the way around under the hood we have the 6.2 liter v8 motor engine base very clean runs very smooth this vehicle has been fully safety and inspected by our service shop has a fresh oil and filter change all the fluids have been checked and tapped off and this vehicle is 100% ready to go to see more pictures of this Denali or one of our other 450 new and used cars trucks SUVs minivans wranglers you know we got to go to our website www.summitauto.com full pictures and descriptions of every single vehicle on our lot videos of every single used vehicle that we have all at www.summitauto.com if you want to check out just our used inventory you can go to truckson41.com that's truckson41.com check out all our used inventory there if you want to make this GMC Denali years today give us a call<PHONE_NUMBER> ask for one of our sales associates to make this GMC Yukon Denali years today once again that number is<PHONE_NUMBER> and if you'd like to check out more HD videos you can go to youtube.com www.summitauto.com remember to like subscribe and share on this video and all the videos that you see there in fact in a second you will see a link to subscribe to our YouTube channel on your left a link to more used inventory videos like this one on your right if you have not been to our website on the bottom a link to this vehicle on our website click those check us out and we really look forward to helping with this super clean 2014 GMC Yukon Denali thanks again


This is the SF Productions podcast network You get about a 1% sugar concentration So it takes you 86 gallons of that sap to make that same one gallon of finished maple syrup So definitely a lot of labor savings involved if you take the time to try and identify The sugar maples that you have and you see that just as you saw up in the lane Most of my sugar maples have white stripes on them and this is this is what you're looking for here This is a sugar maple leaf You're looking for a leaf that has three to five of these little fingers There's a little finger there there and then it has these three big ones here Mm-hmm, and then they have these little scallops on the edges of their fingers Most maple leaves have that general characteristic three to five fingers scallops on their edges The thing that you're looking for that tells you that this is a sugar maple tree is that the scallops Have very smooth edges The next thing you're gonna do is you're gonna wait until late winter of early spring Until you start to get those temperature fluctuations we were talking about and there's always what I call a teaser week So somewhere in January, maybe early February you're gonna say oh, it's it's gonna be warm for a couple of days Well wait because you always get one week where it's like warm for a couple days Then you get another two or three weeks of really bitter cold. So mm-hmm ignore the teaser week but when you see eight to ten days of that Fluctuation and temperature below above and below freezing then it's time for you to tap and When you tap a tree You're basically gonna take a drill bit and we use a standard We use a stainless steel drill bit because it's a little safe, but you can use any standard size drill bit And you're gonna place a spile in your tree and I have a bunch of different kinds of spiles They all serve the same purpose which is to get the sap out of the tree But these are just different styles that have been in use throughout Well forever in fact some of my spiles are 40 50 years old because I again I get them second hand Let's take a look at the bags first of all these are bags Why buckets versus bags? I actually used to do buckets In fact, I had 150 buckets at one point in time when I started out and then I eventually moved over the bags I Like the bags a lot because if you look at a bucket, I know the bucket over here looks a lot bigger But this bag actually holds more sap Wow, so this is a two gallon bucket, which is big For a sap bucket. This is a three gallon bag. Okay, so when this bag is full It'll actually hold three gallons of sap this bucket will overflow at two gallons So one is this holds more sap the other thing I like about this is as I'm driving through the woods here on my tractor I can't tell how much sap is in the bucket So I pretty much have to stop and look in every back bucket and that takes a long time with this as it fills up The ball of you know, you can kind of look to the woods You see that the bags are bulging a little bit You can actually see how much sap is in each one and that's kind of cool too And then the the metal part the sap sack holder that very nicely in my dishwasher So I can get 28 of these in my dishwasher at a time and a couple hours later I come back and I'm good to go for the next season. So I like the bags a lot better It's kind of nice, you know with the fog sort of Thanks, so I'm gonna take a different route than I've ever taken I'm gonna go the way that we go when we're gathering We'll go we'll go the straight route that way you guys can see more Actually from a dairy farm that used it to to Transport milk then they were steam cleaned and then I purchased them So they've only been filled with milk once then they were steamed clean and now we're using them from maple sap 275 gallons in each one of these and then once we're ready to start processing our sap We'll turn on the reverse osmosis machine, which again is new to the sugar shack this year. This is the first year We've had it The reverse osmosis machine is just like what you would use in your house if you had a water system It means the water It separates the water from the other stuff that's dissolved in it now in your house You're keeping the water the good water and you're washing the stuff away We're running exactly the opposite here. The water is being set aside and we're keeping the concentrated sap And when we're ready to boil We'll actually Yeah That's good It's actually perfect What's going on is as we boil the sap all the steam that's generated is Heating the copper which is then being transferred to the sap that's inside Usually we run right between 180 and 200 degrees for the previous we've done nothing else to it So we've got hot saps coming out From the blue pan it goes into this front pan which is called the finishing pan And that's where you really start to develop the maple syrup. It comes in over here And then you cut it just like a maze it goes up and then down and up through this Partition until it gets to here. You can see it particularly up here. It's now thicker It's getting foam and you get big bubbles you see up here in the front there's real big bubbles Then it's starting to get a little more like maple syrup and as it winds its way over to here And then over to this side You can see that those bubbles are getting smaller and thicker So we actually have syrup at about 218 This is a temperature agent for copper We always want to shut that off before we open the door. Otherwise you get this last furnace type effect and there We have a little more syrup than that We always put on our fire gloves because that door is about 300 degrees in there You see we got a nice broren fire. Just throw a couple of keys in the wood Now there's two ways to know that when you're done making maple syrup for the day Either you're just so tired you can't do it anymore Or you run out of sap and we're boiling We're boiling not processing but we're boiling about 32 gallons of sap an hour So I have approximately 100 gallons of sap in there right now. You can see this little 100 mark right there So I've got about three maybe four hours worth of sap to boil yet today. So that'll take me right through today's two ways Which is awesome. So I got just enough Our processing of sap which is turning raw sap into maple syrup with the reverse osmosis machine We can process about 62 gallons of sap per hour. So we're actually quite efficient for the size of the operation that we have Throughout the course of the normal day All get six to eight gallons of finished maple syrup


Recently, I made a video about how I was switching away from DWM and into I3 Windo Manager, and I talked in that video about my reasons why, and some of that had to do with the bar, some of it had to do with just general interest in trying something different after over a year, maybe even two years of using DWM. And now I've been using I3 for a couple weeks, and I've gotten my workflow down to a very well oiled machine. And I have to say, I'm loving I3 again. I had forgotten how awesome I3 truly is. Now the question of whether or not I3 is better than DWM, or whether DWM is better than I3 is a question for another day. I don't think I could really choose a favorite between the two, they're both really good. But the point is, is that I've gotten my I3 Windo Manager workflow down to a point where it's just really satisfying. So I wanted to talk about it a little bit today. So let's go ahead and take a look at what my I3 setup actually looks like. So this is my I3 setup, and as you can tell, there's not a lot of special here, it's what most of my Windo Managers actually look like. The differences here is I've tried a few different things in the bar, like I've had some stuff there in the center, which I don't normally do. So you know, whatever, it's not as if I'm highly productive because my weather's in the center instead of off to the side. Maybe I am a tad bit more productive. Who knows, because of that, I mean, we'd have to ask somebody else, whatever. The point is, is that for the most part, this is what the setup looks like. Now, most of my time during the day is actually spent inside the terminal using them to write.  Now, I'm still forced to use Google Docs quite a lot. Unfortunately, that's just the way work goes. You use what is kind of forced upon you. But the point is, is that when I'm actually able to use my own software, I've been using them. Now, I've made several videos about writing in them and I'm sure I'll make a few more, but this is where I spend most of my time. And for the last week or so, I've been doing this blur thing. As you can see, usually it's just transparent transparency. This time I've decided to go for the whole blur effect. I have to say I'm kind of liking it. It doesn't necessarily lend itself to low end devices, but I don't have a low end computer, so I don't really care all that much. When I'm not here, I'm actually in Firefox. And that's what this looks like. I have my own user Chrome.CSS. So if you're interested in getting your version of Firefox to look like mine, you can find my user Chrome.CSS in my .files. And you can find a couple of videos that I've made in the past, which I'll link in the video description below. If I remember on how to actually do this.   So right now I have 20 workspaces. I know what you're thinking, Matt, no one needs 20 workspaces. Well, FU, I need 20 workspaces. I use them. I really do. So right now, as you can see, I have one, two, three, six, seven and eight on this machine or on this monitor. On that one, I have 10, 12, 16, 18 and 19. So I'm not having, they're not always all in use, but I like spreading my applications out and I like to have dedicated workspaces for specific tasks. And that's why I use so many workspaces. And with i3, the fact that I can go through and define a keybinding for every single workspace is awesome. It's not something you can do in DWM, at least not easily. I've never been able to find an actual way of doing it well. So for example, on this monitor here, I can do super and then the number in order to switch to a certain workspace. So if I wanted to go to workspace three, I could do super three. On the other monitor, if I wanted to go to workspace 13, I'd do super alt and three in order to go to workspace 13. And then I can throw in the shift modifier to those already established keybindings to move a client from one workspace to another. So I can actually move this one here to whatever workspace I want, just adding the shift key to already established keybindings. For me, if I were to ever switch back to DWM, that would be the feature right there that I've missed the most because it's not as if switching to a different tag on a different monitor in DWM is hard. Like it's not hard, but it does add an extra keybinding. So for example, if I had the focus on my first monitor here and I wanted to go to workspace nine on the second monitor, I'd have to first change focus from this monitor to that monitor and then do a super number in order to actually go to that particular tag. It's an extra keybinding. And while that's not a big deal, I got used to it. It's definitely not as easy as having a dedicated keybinding to go to workspace nine on this month or nineteen on this monitor. So that's the best thing about I three that I've discovered so far and not really discovered. I had to set up before, but it's rediscovered, I should say. The other thing is the configuration file. So if I actually go to my repo here and go to I three and go to my configuration file, you'll see that this configuration file, if I move my head out of the way is 70 lines long, 70 lines long. And that's the entire configuration file. Now, obviously there's more stuff that goes to it, right? There's more things that have to go along with it in order for I three to actually function. But all of a sudden done, this configuration file is 70 lines long. And it actually would be a lot shorter if I got rid of these variables that definitions. And if I used fewer workspaces, if I only use like five workspaces, I could get this way down way further, but that's never going to happen. I'm always going to use a lot of workspaces. So that's my configuration file down to just 70 lines. Now, you have to be asking, Matt, how did you get it down to 70 lines? Where are all your freaking key bindings? Matt, where are your key bindings? Now, these are the only key bindings that I have in the configuration file. And that's the only reason why I have those three key bindings here is because if you delete those, I three won't load. I don't know why you delete those. I three just crashes. So where are my key bindings? Well, my key bindings are in sxhkd. So I add here at the bottom, I have an auto start file. So if I go up to our auto start file, you'll see that I'm actually starting sxhkd. And if we go to this file here like this, you'll see that all of my key bindings are actually right here. These are all my application key bindings with some really cool key cords. For those who are nerds like me and want to use key cords, you can do that in sxhkd. And this does all my stuff for ROPHY and stuff like that. And my volume controls and all that stuff. And if I scroll all the way down here to the bottom, we'll see all of my I three key bindings. So this one here moves the focus from one point to another. This one here moves windows from one point to another. This one here changes the spawn mode from vertical to horizontal mode. This one here is the full screen tackle and so on and so forth. I'm not going to go through all of them, but I like having all my key bindings in sxhkd for multiple reasons. First, for whatever reason, I have a obsession with keeping that I three configuration file below 100 lines. I think it's because I use the Arco Linux I three configuration file for a long time. And if you've ever used that, that thing's like 2000 lines long. It's ridiculous. I just realized that you probably can't actually see what I was talking about, but you can actually see the see the stuff now. But the point is, is that one of the reasons why I like this because that Arco Linux one was so long, it kind of turned me off from really long I three config files. But also I like this because you can go through and do things like this, where instead of having to go through and list out each and every single key binding, you can just go through and kind of create this formula where it will associate what's inside these brackets, what's with what's inside these brackets, and that means you don't have to go through and over and over again, list this one particular command for each and every key binding that you need. That's really cool. Also, adding in that you can do key cords, which is something you can't do very easily, at least with I three, you'd have to use modes, I believe, in order to do something like key cords in the standard I three config. So those are my key bindings and such. Now, outside of that, I don't think that there's much to talk about. The only thing that I found myself missing is scratch pads. Now, there is a built in functionality for scratch pads in I three, so you don't have to get into the comments and say, Hey, Matt, there's scratch pads in I three. I'm aware of this, but they're not the same as DWM, like the patch that you can use in DWM in order to get scratch scratch pads allows you to create multiple scratch pads and it's really easy to set up. And while you can do it with I three, I found that it's a kind of a tedious process and it doesn't always work. It's really suited towards just one scratch pad or with sending other applications to a scratch pad workspace. I'm going to continue to play around with it to try to see if I can go through and kind of get it to work for me. So far, I have not been successful on that. So hopefully I can go through and get that working so that actually sues me because I really do mismatch scratch pads.  I might do that or I could go through and install something like Tilda. Tilda does kind of does the same thing. The only other thing that I've had a problem with is OBS. Now, when Tyler and I record the podcast every Thursday around three o'clock Eastern time and stream it on YouTube, I have to go through and use OBS to capture the discord window, which is where we do the call. And for whatever reason, OBS does not like to capture the discord call when discord is not on a focused workspace. What it does is if I switch back to a different workspace and like discord is in the background, like on a different workspace, the video will actually freeze in OBS. I don't know why it does this. It's not specifically an I3 problem because it does happen on other window managers as well. But it's annoying because it means I have to keep discord in focus all the time in order for me to actually record the podcast. I haven't noticed any other X window problem capture problems other than that one. So it's not that big of a deal simply because I've gotten used to it, but it's definitely something that didn't happen in DWM. So those are my two like negatives that I've come across in I3. Other than that, I've had a ball. Like I had completely forgotten how good I3 is.  And I've considered going through and trying to replicate it here in I3. That's something that I still might do. But I haven't missed it enough to, you know, like switch back or anything. So those are my basic thoughts on my switch so far to I3. Whether or not I will do a long term review of I3 like in a month or so, I don't know yet. If that's something that you want to see, leave a comment in the comment section below. I don't know whether or not that's something anybody would be interested in. But if you are, like I said, go ahead and leave a comment in the comment section below. You can follow me on Twitter at Linuxcast. You can support me on patreon.patreon.com slash Linuxcast. Before I go, I'd like to take a moment to thank my current patrons. Today, Devon, Patrick O'Marcus, Megalyn, Jackson, Neptune, Steve A. Sebrek, Elynyx, Garrick, Mitchell, Arts Center, Carbon Data, Jeremy, Sean, Odin, Martin, Andy P., Merrick, Kamp, Joshua Lee, J-Dog, Peteray, Crucible, Dark Bennett, Six, Flat A, and Primus. Thanks everybody for watching. I'll see you next time.


many people at the end of the day, such a stimulating day maybe. So now that the organizers have put me between you and the jammer jam, so let me get started and try to be on time. Yeah, though the organizers has requested for the questions at the end, if there is something pressing, just let me know during the talk. And I'll try to end like 10 minutes before the schedule time so that we have plenty of talk time. So my name is Shoria Roy. I'm a scientist and a manager in Xerox Research in Bangalore. And the talk that I'm going to give today is titled, Transfer Learning in Practice. So there is two parts to the talk. So in the first part, I'll give a very basic introduction to the transfer learning topic, just covering at the breadth level, at a very, very high level, so that you know what we are talking about. I'm sure there are many knowledgeable people here who may be already knowing it, but those will probably be a repetition, so pardon me for that. The second part, I will be talking about that how we put that in practice. That's the focus. And that part has kind of been published in multiple conferences in Artificial Intelligence and Computational Linguistics last year and this year. So getting started with the talk, so let me go, what is the motivation for this talk? And what the first diagram that you see on your screen is a cartoon depicting a very, very common supervised learning framework. So we have a bunch of training data from some domain. We have a bunch of algorithms which can be trained using those training data to create something called a model. And that model is applied on a test data. I mean, again, most of you will be familiar with this. Now a major assumption which is behind this paradigm is essentially about this nature of the training data and test data. They are expected to be same. And speaking in the little bit formally, so the joint distribution of the data and the labels and some of these data and class labels, as is called in the supervised setting, are coming from the same distribution for both the training and the test data. And under that assumption, all the work that has gone into the learning theory kind of holds true. Now if that doesn't hold true, then it's a problem. So let me give you an example. So we all are familiar probably like sentiment categorization. Like it is like, again, probably a bit into that problem where customer, sorry, user-generated content is some needs to be categorized into different groups like positive, negative, neutral, or like on a scale of 0 to 5 or something like that. We are all interested. I mean, the commercial entities and organizations are interested to know that what are people thinking about their products. Now we wrote a sentiment classification algorithm, and we tried that with some of the products. As you can see, that books, DVDs, kitchen, and electronics. And this is part of actually a very, very standard data set used in this literature. These reviews are collected from one of the popular e-commerce website. Now what we did is that we, as I said, that we built a sentiment classifier for one of these products and applied it on the test data. And we got some performance metric classification accuracy of about 87, 88%. Now instead of training on the same data, if we would have trained it on a different product's comments and applied on that earlier domain A, we see that the accuracy gone down by almost 20%. And that is where lies the motivation of this problem, that you cannot train a model on a data set and apply it on a data set which is very, very different from there because then the performance degrades. So now coming back, now this is formally as in essentially known as that the basically what is happening is that this joint distribution of these two data sets are not matching. And as a result, the performance of the algorithm is degrading. And why this happens, well it may happen because there are many products and many domains are there. And I'll talk about the domain a little later. But many, many things get changed from training and test. And the other reason is that even within the same domain, the astronomical rate at which user-generated content is produced these days, it may be the case that the data has got outdated. The training data gets outdated and you cannot apply it on the data that is being generated today. So you need to again, what we call as a retrain the model. You have to again have a set of people label those data and retrain this model. And that's the challenge, that's a challenge that we would like to address here. Now summarizing what I just said here, that you have a domain a and domain b and you want to build the same learning system. But if you want to do this in the traditional way, you have to build the system every time from scratch. Every time you have to get the label data and do that. It is not only time consuming and expensive and have required involvement from human labelers. But at the same time, I mean you cannot kind of do this very fast if your data is generating or getting changed at a very fast pace. On the other hand, the transfer learning in contrast allows these domains and tasks and these distributions used in the training and test data to be different. We'll see how this is done, but that's the thing. And it is based on this fundamental philosophy that reuse the knowledge. The knowledge that you have learned while building the system for one time, use that knowledge. And this is something very similar to what human or maybe children do quite effectively. I mean learning to recognize apples can help you to identify pairs, right? Or learning to play cricket can eventually help you to play baseball with a caveat maybe. I'll come to that. And then, so that's essentially the philosophy that we would like to do here so that we do not have to every time go for this expensive labeling process. And again, this is, again, another cartoon. It's a very simplified flow of transfer learning just to key points. There is something called a source domain where there is a lot of label data is available. There's a target domain, but there's a lot of unlabeled data is available, which is very inexpensive to get. And maybe in some cases, there may be a very small amount of label data for the target domain is also available. These two things are fed into something called a transfer learning model, transfer learning algorithm, and which creates something called the predictive model, which can be applied now on the target domain test data. So now you have a model for the target domain test data without requiring to have a lot of label data as you needed for in source domain. This is also known as the transfer learning and again with minor differences, which is not relevant for this talk, is also kind of is referred to as the domain adaptation task. And there are other related terminologies like multi-task learning, where you try to learn for both the source and target domain together. Again, we are not covering that. But here we are trying to, using the source domain, we want to get the best performance in the target domain. That's the goal that we have. Now, and I should clarify the word domain, because this will keep coming in, that domain is not necessarily in our popular terminology that it doesn't have to be as different or as big as like health care is a domain and finance is another domain. In fact, it can be a very small collections within a particular larger concept of domain. For example, from one health care company to another health care company. I mean, just for this talk, we can kind of tell them that any two collections which do not match with respect to certain attributes are called as two domains. And what are these things? So let's just look into what is these transfer learning settings that commonly happen. So there are two key notions in the transfer learning. One I have been already referring to is domains. That is what I will clarify a little bit more formally here. And the second one is tasks. That is the next slide. Now, a domain is essentially consists of two components, a feature space and a marginal probability distribution on that feature space. So a feature space, again, from going back to the sentiment classification example, the list of all words or the vocabulary, as we commonly use in a text classification terminology, that's the feature space that you have. And the marginal probability distribution is what is the probability of a particular set of words appearing in a review. So that's the, again, I'm putting these things simply. But essentially, these two attributes define a domain. And as you now can see that, these two can be different between any two document collections. It doesn't necessarily have to be as popularly, commonly used terminologies like domains. Now, given that these two things are there, the feature space and the marginal probability distribution, so the domains can differ in two different ways. One is a feature space at different. What is an example for that? Say, web pages which are written in English and Chinese. Again, so they are different. You cannot build a model in the web page for English, web page classification, and apply it to a Chinese. Because the features are different, so you cannot do that. The other thing is that the marginal probability differs, right? Even though two web pages are written in English, if they are blogs on politics and religion, and you want to do certain classification within the politics, can you just take that model and apply it to the ones on the religion? Probably not, right, or not. So that's the other way two domains may differ. As I mentioned, the other characterizing attribute here is the task beyond domain. So task is, again, consists of two components, a label space and a function. A label space is the label, the class labels that we would like to assign to different objects. For the sentiment categorization, there were positive, negative, neutral. These were the three labels, right? The other one, the function, which is essentially we are trying to learn, given an unknown test example, how can we say that which label category it belongs to? That's, and again, probabilistically, it can be written as probability y given x, that is given, given an x, x, or given a feature vector, what is the label, the class label, that you have learned based on the training that has been provided, right? Now, again, so here also these two things can differ. If the label spaces are not same, the common example is these binary versus multiclass classification, where you have two labels versus n number of labels, and you probably don't know what is the connection between these two label sets. And the second thing is that where the label spaces are different, and as we call it, the decision function has changed. Essentially, the label sets may be the same, but the label sets, the way they are characterized by the feature vectors are different between these two cases. So under this setting, or covering these four combination, two cross two combination, there have been the transfer learning literature has been developed over the last, I would say, since 1995, where it was introduced the first time in a NIPPS workshop called Learning to Learn. So the vast amount of literature has been developed in this field, but and if I could like to summarize it in one slide, then there are like three very, very fundamental guiding questions are there, which is actually I have taken from this paper by very, very nice survey paper by Pan and Yang, and if you guys are interested in this topic and what would like to kind of get yourself introduced, this is a very nice paper to start off with. It appeared in the Transaction Knowledge and Data Engineering 2010. So the three questions are essentially what to transfer. So essentially some knowledge, and I have to kind of keep this word knowledge abstract, but it's specific for individual domains or tasks, and some knowledge may be common between multiple domains or two domains that are under in consideration. So we need to identify that what to transfer, and that's the first question that we need to answer. The second part is that how do we do that?  And the final, so the first two questions has attracted probably the maximum amount of work in this field. The last one to answer when to transfer, under a particular scenario given two domains, the way we defined it, is it worthwhile to do transfer, right? And just to kind of give you an analogy going back to the previous examples that I gave, knowing the tennis ball is round, is a sphere doesn't help me to probably recognize what a sphere is, knowing how to do nice leg glance in cricket probably doesn't help me to play better baseball, right? In that case probably transfer is not going to help, and that is what the phenomena is called is negative transfer. And this is a topic which has received relatively less attention, but I'll tell you in the second part of the talk that why this is crucial when we talk about practically deploying such techniques and selecting or combining multiple sources is another kind of related question that should use adapt from one source versus multiple, but again I will just kind of touch upon towards the end just so that you are aware that this is a topic. So now on the final slide on the first part of this talk here, so the transfer learning literature again by very, very nicely categorized by Pan and Young that there are like different kinds of algorithms have been proposed. I mean like there's hundreds of papers have been written on these things, right? But this can be categorized into like in these four broad buckets. I probably will not go into the details, but just to give you the sense that what is this, what does, so what does instance-based approaches means? The intuition there is that when you have a source domain and the target domain, you have labeled it in the source domain, you want to learn a classifier on the target domain. Only certain instances probably in the source domain are going to be providing useful information about the classification in the target domain.  I mean, and that's plenty of classification algorithm. You just, you re-weigh certain instances or up away certain instances based on which are going to provide useful information from one domain to another. That's essentially the principle of instance-based approaches. So maybe continuing on the second one, the feature-based approaches. So what is the intuition there? And again, I mean, you can read plenty of papers are referred in these, in the survey papers if you are interested in to know the actual techniques. So I'm just going to give you the intuition here. The feature-based approaches is essentially, so we know that these two domains are probably different and they are from the two different feature spaces. Now, can you define a new space where if the source domain instances are projected, target domain instances are also projected and their distances are reduced? Ideally, you'd like to find a space where if you project them, their distance is minimized. Now, by what is happening by doing that? Now, in this space of source domain instances which are labeled by the way, if I learn a classifier, that will be very similar, that will be very relevant for the target domain as well because in this space, the target domain instances are also very similar to the source domain, right? And now you give back, bring back the labels and associate with the target domain instances. So that's again, it's the intuition for the feature-based approaches. And so on and so forth. There are these parameter-based approaches, relational-based approaches which have been developed in this domain. Now, it has been, as I was saying, that it has been a hot topic in research in the machine learning, artificial intelligence, computational linguistics, computer vision, all these scientific conferences and there are tutorials, workshops, papers, all these other things. But extremely rich literature, and that was our observation, that extremely rich literature but much less applications in practice. And that is the sweet spot we wanted to hit, to see how the vast amount of literature that has been developed, how those can be applied as it is or maybe by innovating on them. And secondly, what are the new questions we need to answer to apply them into the real practice or real life? And that is where I will move to the second part of the talk. Maybe I can pause for a briefly and just see that if there is any pressing question at this point. The organizers maybe may not like it because they have said that not to ask for questions. Okay, cool, okay. So anyway, so let me proceed on that. So the problem that we applied this thing, this transfer learning is for social media analytics. I'm sure everybody, all of us know that social media analytics, it's like we have to do this. It's just so much of content and so much of data is available if we cannot mine insights, it's a waste, right? So I work for this, I work for Xerox. So Xerox has this product called M-Path, which is a social media analytics product, which again, it has some unique differentiating features, but at the same time, I mean, it has done some of the very common things in terms of this categorization of sentiment and topic categorization, identification of geolocation, event detections and all these kinds of things. So we are going to focus on the sentiment categorization and topic categorization, these are the two tasks. And as I have been building it up till now, so transfer learning is applied for the supervised learning or the classification or categorization problem. And that is where this topic is also relevant for the real life example. Now, so this is a typical workflow, it's a little bit busy slide, I will not get into a whole lot of details, I don't know if it is visible. So basically there are four steps to the process of this product M-Path, as we call it, it's listen, analyze, engage and measure. I'm just at high level, I'm just telling you that listen is essentially collecting or crawling the data, analyze is the task of labeling the data, building the model and validating those and the usual supervised learning workflow, engage is essentially applying those models and see them how they are working in real life and measure is essentially kind of measure the impact, ROI, business impact and things like that. The module that is of interest to us or that we wanted to hit is this particular analyze module. As you can see that this is the part where every time expensive and time consuming human annotation has to come. And now here the notion of domain is again very important, right? Any collection that we crawl from the, from say Twitter becomes one domain. If fifth elephant, there has been a lot of tweets are going on around fifth elephant. If we want to collect that, what are you guys saying about fifth elephant? Are you saying positive, negative or are you guys neutral? I collect all the fifth elephant related tweets, very easy to do and then I want to build that model. Now this is something I have to do it really quick, I have to do it today and give it to Zaina saying that please this is feedback, especially the negative ones and see if you can address it by tomorrow. If I give it to her on Monday, I mean I'm sure she won't mind but it will be of less use, right? Because I can't address, I mean maybe in the sixth edition of fifth elephant we can address that. So we have to do this really fast and that's why you can't have these people labeling 200, 500 tweets sitting there and doing this building model and things like that. That's the first, the second reason that I mentioned about this fast data evolving. So retraining model on scratch on new labeled data is not a feasible solution in this case. So we propose this transfer learning methodology and let me just quickly skip this guy which is essentially going to do these two things minimize human annotation and reuse previous knowledge. We are again the key point in this slide is that we are hitting the analyze step which is the most time consuming step. As I said, this is a text classification task. I mean after understanding the broader business context when I work with my colleagues and I essentially convert this into one of the technical problem, one of the scientific problem, right? And the scientific problem here is the text classification. So we have to build a, we have a domain, we have a lot of labeled data from different collections. We have to build a model and apply it for all the fifth elephant tweet which is my domain too for which I don't have any labeled data. The challenges are that if I do it directly and as I showed you in the sentiment classification example in the beginning, there'll be significant performance drop and hence the models has to be trained every time from scratch. Perfectly, we have done our job converting from the real business problem to a converted into a transfer learning problem, right? Now at this point in time, we could have gone ahead and we did indeed also the, we applied one of the instance based, one of the feature space based algorithm and see that and saw the, what is the, what is the outcome that we are getting? Now by doing a lot of experimentation and brainstorming, we realize that there are two key challenges that we still need to address which would make them practically feasible in real life. One is while in the literature, we say that okay, there's a source domain and there's a target domain, right? In this case, we had hundreds of collection which were already labeled and tagged by people. We have to understand that which domain to select and from where to transfer for the new collection, right? And that is where we say we introduce this notion of the similarity aware transfer learning. Transfer from a collection which is similar to the target collection. If you are trying to label the fifth elephant collection, you try to label it using another, another maybe a big data conference related tweets, right? And not from a, not from a medical insurance tweets. The other one, and again this is something as a part of the algorithm I will explain in the next slide also that most of the algorithm in the literature have been like this one short transfer. You do all this feature space mapping shopping things and just just transfer and project and transfer and be done with it. Here we mentioned that and here we actually essentially did this in a manner what we called as the iterative transfer or similarity of a slow transfer in multiple iteration depending on how well we are doing or how confident we are doing as we are progressing, right? Now as, as, as computer science people we just love flow charts. So let me just have this flow chart where hopefully a little bit more clarifying as compared to what I said in the last slide. So essentially these are the main steps that are there in our proposed technique to apply transfer learning for social media analytics. So first step is the similarity analysis where we are essentially doing that, okay? How similar is the domain from one domain to another? The next three steps is adaptation, model building and result analysis is the key transfer learning algorithm. And for the algorithm I would refer you to the paper that was mentioned in the previous slide where, which is essentially this iterative transfer based on the similarity as well as the confidence I am getting. The result analysis leads to these two questions that is the transfer satisfactory already or not? If not, then what we do is that, and this is again another innovation on this I would say that little cherry on the top is that I bringing in this notion of active learning into this framework. So while we have assumed that there is no label data available on the target domain, at this point in time we say that well the, what the adaptation that we have done is not satisfactory for you because you have not given any label data. Can you label like 20, 25 samples for me? And I will try to see that what is the best I can do here. Now instead of selecting those 20, 25 samples at random from the collection, we apply active learning. And active learning and again many of you may be knowing is essentially identifying the instances which would help you to build a classifier better from a big collection of unlabeled data. And then we kind of attach that small amount of label data to the algorithm and that is the loop is iterating till we get a satisfactory answer here. Once it is done, you save model, you apply and you be done with it, right? Let me show you a quick video. Sorry, I should have opened it. So this is the mute videos, I'll give a commentary here. So basically what we are doing here in this case, this is the social media product in M-path where the transfer learning has been embedded. I'm sorry, thank you. Where transfer learning has been embedded. So these are the different collections that are there already in the crawl mode. So we have collected this particular collection and say that we would like to build a classification for this collection and we don't have any label data. So what we go there and add this collection to our system. And then on the right side, what you see is the relevant source collections from the corpus which are already labeled has been identified and this is based on the similarity between the content and we don't use any labeled information at this point in time. And a person who is user can actually go and see some of the comments which have been crawled for this particular collection, the one that I would like to, the target domain collection, I would like to categorize. And then the person among the selected source domain, we could have selected automatically the first one which is the most similar but we kind of give them this option to the user to select one of them as the one to transfer from. And again you can, the analyst can actually go and look into the source domain comments and to see that whether they are good, right? And then the adopt and test button is actually initiating that iterative module where the source domain collection is being used to train a model for the target domain. And now what you see on the right side is that essentially these many instances have been classified as positive, negative, neutral from the target collection, right? Now we cannot compute an accuracy because there is no labeled data at this point in time. So we just ask the analysts or whoever is actually using it that this is the first round of data that we have given. Based on that, you can just go through some of these comments which have been categorized and tell us that whether this is satisfactory or not. And if this is satisfactory, not satisfactory, we go to this add data module, which is the active learning, which is the step that I said that can you give me 2025 samples to label. And once that part is there, and this is the part where the person is essentially labeling the data as positive, negative, neutral on the right side and this is a manual step. But this is an optional step only if they believe that it is not good enough. It is not satisfactory at this point in time. So we annotate all the selected comments in this round and then we go to the iteration of adopt and test. And this is something can go on till the time they person feel that it is satisfactory or not satisfactory. And now as you can see that that some of the data have been tagged, so we can also compute what is the accuracy of these, right? Otherwise, there is no way you can compute the accuracy because there is no label it. Of course, if you had a held out data set, you can still compute a validation accuracy or something like that. But in a real life setting, when a person who is doing social media analytics is actually using it can just go through the comments and essentially identify that how well this is doing. So now if I go back to the slides and again, so there is a bunch of results slide. I'll probably just go over only one and so essentially, so this is a slide that is showing that where we had a test collection on Apple iPhone 6 and this is just as an experimental details. Apple iPhone 6, we didn't have any label data and we selected the source based on the similarity analysis from a collection which is Huawei and again, they are related domain. But the slide that is kind of essentially pointing out is that the deep red bar, which is indicating the accuracy with the transfer learning incorporated and the light pink one is the one that is without a accuracy incorporated. The first bar where, which is highlighted in green is essentially showing that how much of accuracy you can get even if you do not have any label data from the target domain. And if this result, if this number is good enough for you, you are done with it. You are, you have just crawled a collection and you have built a sentiment classifier automatically directly from based on an existing source collection.  In summary, we essentially kind of observe that on an average, we could outperform the only supervised model with using only one-fifth of the total labeled instances, right? So which is like a saving of almost 80% in terms of the manual accuracy. But more than that, it makes the system automatic completely as you are going forward. Now an important part of deploying such a technique in practice is that these accuracy numbers may not mean much by the actual practitioner, right? So they are going to actually try this system out.  And told them that why don't you try out this tool and give us user feedback or rating based on that how good you think they are doing, right? Now at the end of that, their feedback was that usability is like five one five reduction in effort is four on five. I mean we got pretty good result in terms of, in terms of the, not only in the scientific accuracy numbers, but at the same time we got a lot of, a lot of good feedback from people, right? In terms of who are actually using this thing. Now so this is, this is the system aspect and the analyst trial results and some of these things we kind of, we have a paper in this North American Association of Computational Linguistic Conference where we showed that how to actually, again, I mean the first paper was more about the technique, the second paper was more about the trial and how it worked in practice with the, with a large, large amount of practical data sets and everything. Now let me just move on to, okay. Again so this is, this is another application in the, in the, in the, in the domain which is on the, on more on the conversation labeling task and there the task was this engagement labeling or identifying that a lot of conversations these has happened over the social media channel in terms of the customer support related things like a query or a question is being asked and the, and the agents are monitoring these, these channels and they have, they are supposed to address and at the end of it these, these queries need to be either marked as like open, closed or solved and things of that nature and again this can be modeled as a supervised classification problem, multiple, a fine grained model is kind of also is, is possible which we called as the, the conversation labeling task but again essentially if you, if you just model this as a supervised classification problem the, the, you cannot just again the same, same issue of the domain, domain divergence comes in, in practice, right? So without getting into the much detail and again so the, we, we, we use the conversation analysis using sample data from some of the telecom operators and, and the financial system. These are very, very small data but essentially this is the part that actually helped us to communicate the benefit of the transfer learning even before we did the social media analytics and again so here also we see that a number of significant benefit in terms of using the transfer learning instead of using the supervised model as it is directly into the, into this, into, into the system. Sorry I have to rush this part just to make sure that I, I give enough time for the question answers and stuff. Let me come to the final part on the, on the couple of talks or couple of, couple of thoughts on that, okay, what are the further research that happened beyond the practical deployment of, of the, of the transfer learning technique that I mentioned. So one of the common problem that we realize that when we were applying transfer learning on the social media data sets that in the literature mostly this transfer happens from single source to a single target but in practice we many times have this multiple source domains available, right. Now for example in the social media context we had like hundreds of collections already labeled. Now given a new collection why do I have to always choose the best most similar even though we are doing in a similarity aware manner. Why do I have to learn from only from the, only from the source domain directly, right. I can learn from multiple source domain effectively perhaps by extending the similarity aware iterative algorithm and that is where we introduce this, this notion of the similarity and complementary properties of, of domains to identify the best K domain from a learning algorithm the transfer learning algorithm can learn and apply to a target domain. And again in the, in the, so we, this is more of a theoretical work that where we provided the theoretical justification for the source selection procedure and also give like kind of guarantees on mistake bounds for the MSID algorithm that it cannot get worse than a lower bound and things of that nature. And finally, and this is a, this is a work that will be presented in a couple of weeks to the, in this ACL conference is this, all the, all the transfer learning examples I gave are all examples of the task where the number of labels are same between the source and in the target domain, right. If the source and target domain labels are not same and the tasks are essentially varying how do we, can we, can we apply cross domain adaptation with disparate labels and that is the main focus of this, of this paper where we kind of again model this problem as a, as an optimization problem or maximum coverage and propose a greedy approach to show that how you can select new set of labels for the target domain even if you do not have any idea that what are the labels are going to be just based on the number of labels. Now finally concluding, so what we covered here, again so the machine learning based automation and the need for transfer learnings. I hope I motivated that the need for transfer learning why we need that in practical setting. I gave a high level introduction of transfer learning and if you guys are interested I'll be very happy to give you further pointers. Some of, some of them are, I have mentioned in the slide. Showed one example, transfer learning in practice for social media analytics. We are doing multiple other things for, in very, very different problems to show that how pervasive this could be. And I also talked about some of the ongoing research direction with this multi-source adaptation and the, with disparate label sets. So with that I'll stop here and thank you. Okay, we can begin with the Q&A. If you have any questions raise your hands. Hello. So one question is I think the use cases that you have mentioned is, you know more on the social analytics and you know this one. When you need a more accuracy, you know like on that. So how do you think what is the, what is the recommendation? Can you give me an example? What do you mean a more accuracy? I mean, healthcare if I really, you know like looking at the patients and then trying to identify whether you know it is a genetic or not. So do you think that it's really going to be? That is where the, absolutely that's a good point. And that is where we introduce this notion of the satisfactoriness or not. Because you just cannot apply your transfer learning algorithm and expect that the performance, it's performing good. It may perform good, but you need to get a validation step to know that, okay, whether this is satisfactory or not. Yes, in healthcare the level of accuracy, specificity and sensitivity, is required to be much higher. But again, with the manual intervention in place, we think we can apply that. So what do you mention is the manual intervention maybe more in those cases where you need more accuracy, probably than the. I mean, manual intervention is a tool. You may apply a rigid manual intervention when you are very, very specific about the particular outcome. Maybe in a social media analytics, you can be less rigid about it. Okay, thank you. Hello. Hello. What do you mean? Hey, what I could think that the cracks of this whole approach will be to identify what is that thing which is invariant from one domain to other and across time. What is the systematic way of extracting that thing which is going to be invariant so that I can, that what part of it basically? Sure. Sure. I just want to have some intuitive feel of it. Right, and that is where the, indeed the invariance is the cracks of it. That you want to identify that what you can transfer because that is what is invariant across these two domains. And the way of doing it is these instance-based approaches and feature-based mapping-based approaches. So essentially, you want to map to a different feature space where these two domains are invariant. You will not be able to distinguish between these two domains. And if you can identify such a feature space, so that becomes like in the... Oh, absolutely.  I did not get into that. I mean, for example, even canonical correlation analysis is a way you can identify that what is a, what is that invariant space? There is a very famous technique called structural correspondence learning which identifies that what is invariant between this. And let me give you an intuitive example. In the sentiment classification example, there are certain words which are invariant across domains. They are positive or negative irrespective of the domains. Excellent, best, good. These are always positive irrespective of the domain. Well, there you have to identify. So these, these things are called as pivots or invariant pivots, right? So once you identify such invariants, which may be different for a different language, I'm just telling you the example where the feature distributions are different, right? In that, with respect to those features, you can actually then identify that, okay, what are the other features that are going to be positive or negative? Okay. Hi, my name is Uday. As you showed, social media, analytic tools. So my, basically, two question one, while considering the model, did you take on this natural language processing? If yes, how much was the weightage? Just let me make sure that I understood the question. So you're asking that, how did we decide on the weight of the instances? Yeah, in social media, generally, the guys write, I mean, their language is very difficult to identify. So generally, we use this natural language, a language process to identify the whole meaning of sentence. So did you consider this one? While doing the modeling? I mean, this linguistic pre-processing is needed, irrespective of whether you use transfer learning or not, whether to how to remove the noise, how to canonicalize them, how to tokenize them, how to make sense of smileys and things of those nature. So those I am not even getting into the, those are needed. Once you have done that, and that you have to do for every domain, once you have done that, then how do you identify that, okay, what is the source domain instance, which is more similar to a target domain, right? And that is where this algorithm and you can, yeah, refer to the paper to see more details, how we are doing the weighing and things like that. Thank you. When you say we do our transfer learning and check if it is satisfactory or not, right? So how do you identify that? Because we have the new data unlabeled, it's not labeled. So how do you identify that? Can you? Good catch. We assume there is a validation data set. Once we have a validation data set, then we can do a satisfactory identification. In case we don't have that, the analyst has to manually or whoever is actually analyzing the data has to manually go through, as you saw in the demo, is actually going through some examples and saying that whether this looks good or not. Now how much you can do that, that depends on how much of manpower you have. So I mean, once we have our results ready with the transfer data, we randomly pick something and analyst analyzes and then so basically again one more validation has to happen from manual intervention is there right there as well? Well, I mean, that's an optional step. If you do not want to do that, I can do that one short transfer based on similarity aware or all the things that we are doing and then you can give you the prediction. But what we find in practical setting, people are okay to validate certain prediction and again, mind it, validation is less time consuming than actually assigning the labels. You are checking whether something is correct or not versus you have to categorize into five classes. So that way the validation is helpful. I mean, I take your point, yes, the manual intervention is needed, but firstly it is optional. Secondly, it is less expensive with respect to time and effort. Hi, Shwarya, here. Yeah, great presentation there. I wanted to ask you, is there a possibility of extending this beyond classification problems? Yes, yes, there is, like any specific question. I mean, for example, you can always justify, or do you want to continue with the question? No, no, sure, go ahead. Well, regression is a definite possibility that you can actually apply and there has been some work that it has been done, but only in the supervised setting it makes sense. It won't make sense in an unsupervised setting because the labeling effort is not there. In fact, we are currently working, I mean, it's premature that's why I didn't mention that transfer aware deep networks. I mean, can you actually train networks which are transfer aware? Again, I mean, deep learning is awesome, but still you need level data, you need plenty of level data, right? Can you make them transfer aware? That's something we're working, so I am not going to talk into that, but yes, that's possible. And any supervised setting you can actually put in, regression, ordinal regression, classification, anything, you can apply transfer. The philosophy is very, very much there. Thank you. Hi. Here. Yeah, it's a follow-up question to what he asked. So assume I am satisfactory with my validation set, like the learning on the target domain I'm happy with. So does empath relearn on this set, you already learned something on the source domain, that model is there. So now consider the validation set as a new label set I am passing. So is there any feedback going there and update the model? So in future, if I predict my scores would be... It's possible, we are not doing that. Okay, so empath doesn't do that. Thanks. Hello. Good question, thanks. Thanks for the great presentation. So just a continuation to that thing scenario suggested. Let's say the validation fails, what happens next? Of course you ask them to label it. So how much labeling is enough? Oh, that's one of those magic machine learning parameters, right? So we saw that like one-tenth of the initial training data that people have used for source domain is a good number. But you can start off with very small like, I mean, here we are talking about training data size of few hundreds. So you can start off with like a couple of tens, 20 or 30 examples and see that. And given that this is an iterative procedure, so you don't have to kind of give a whole lot of examples at the very beginning itself. You can try out with a small and see what's the change. And, but yeah, there is no specific number that I can not suggest. But it's one-tenth is a ballpark that we don't go with. So when do you actually say that the model is again ready to try it to them? Oh, after the analyst can give any one example and say that adopt and test. Okay. And then check that whether it is satisfactory or not. It is, we give as a recommendation that you give 25 examples, for example, and then train it and then see the performance. Don't give very less because it won't be good. And our contribution was to select those 25 examples. And that is where active learning is something we used. All right, all right, okay. Thank you. Hello. It's here. Yeah, yeah. I have a question that is when you tag the tweets, we can't say a tweet is constrained to a single topic. If we consider, yeah, iPhone fires, tweet is a tweet about iPhone fires. They may say that for camera it's a best quality, but they may say that the battery is raining. So right, so we can't tag that directly because it's a positive thing or a negative thing. So this is very good question. This is a subclass of sentiment categorization problem called aspect-based sentiment. It's something, again, a very well researched topic which we did not look into here. The way I would like to kind of brush away this thing is that that's also I can model this as a classification problem. And instead of these positive negative classifier, I can build in an aspect-oriented sentiment classifier and to address that. But yes, that's a good point. It would be interesting to see that whether transfer learning works under those fine grins, its scenarios as well. We didn't do that. So that is the iterative. When I say a slow, I use the word in kind of in lieu of the iterative. So iterative has in that you can gradually feed in some examples to improve the model over a period of time. It's, yeah. So actually what you're doing is a one-shot transfer plus active learning which you're terming as slow. Slow iterative transfer. Well, with the active learning examples, I'm still again doing transfer learning. Transfer learning can happen in presence of no-label data or in presence of small amount of level data, as I introduced in the right. So when the active learning-based samples are given, I'm not just doing, I'm not learning the classifier only based on the examples that are given as part of the active learning. I'm learning from the source domain collection and the small amount of label data to obtain a better classifier. And that is why it is right to call as iterative transfer. You have also seen this kind of phenomena happening with small data. When you have very less number of training items, so you go ahead using the domain kind of data. How is this different from the others? I didn't understand the question. I mean, what do you mean by? For example, if I have very less amount of training data, instead of training the classifier with that data itself, I go ahead and annotate, I go ahead and supplement that data. You said, you said it, you annotate. After you say it doesn't, I don't label them, rather I would bring in another readily available domain data and try to classify it. Won't that fall in like very similar to active learning where you learn in presence of very small amount of data and large amount of unlabeled? I don't, actually I try to train the model using both the data sets. The small data plus a similar domain data. I mean, I would say that that is more close to, closer to the semi-supervised learning scenario where we have less amount of labeled data and lot of unlabeled data. The variation that you are bringing in is that this unlabeled data is not from the same domain. If you are doing something for the fact that this unlabeled data is from a different domain, then these two are similar. But if you are just bringing in a similar domain, another domain's data as, because it is similar, it's a, I would call that that's a semi-supervised learning unless you are doing something for that. For example, this feature space mapping that we do to ensure that these two, this classified training is happening on a space where this new domain's data is kind of similar to the source domain data. If you do something like that, then it would be transfer learning, otherwise it would more like semi-supervised for me. In case I answer the question. Okay, I think we'll need to intervene here. Sure. I don't have time, thank you very much. You can take it offline.