Hold on. We're trying to set up the audio over here Against thank you everybody. We're set up. We're setting up a new machine With a little more power To get us through the remainder of the evening Jeff Fritz is doing an amazing job Being the AV guy. Oh, thank you, Jamie Yeah, Jamie Singleton also being my co-host or where we're not co-hosts. We are the host Together, that's right So we're trying to figure this out and we have as you can see we have David and already ready to go We obviously just you can't hear him you guys that stop sharing So we're just figuring out the audio pieces and we should be ready to get rock and roll Yeah, the mics are on We're just live in the studio. That's right. The rain in Spain falls mainly in the plane Not so good for everybody. I know I could do You can do a couple jokes Jeff is up very late tonight. Yes, a rock star So hey, so all of you who are watching right now are these hearing us right now You guys need to check out Jeff shell He broadcasts through the visual studio channel as well Dad jokes. Oh, we can do some dad jokes too. That's awesome. You know the best part about UDP jokes Is I don't care if you get him or not Come on at least there's one of you geeks out there that found that I'm using There we go, thank you King demo there Let's see how many speakers there we go ha Oh, that's funny that fell into a static boy boom boom The device isn't used by another application We can see the slide deck now over here. I don't know we're gonna try this out Hey, there it is. You guys can see my Skype now. Oh The answer for Clark isle or Clark you it is always spaces Unless you set your tabs to be always four spaces Then that's okay, too So the questions here is is do we do K and R because that's the only way to really code You know God who scream of death is the best scream of death. I love that Should we just go to the other machine thing or yeah, let's go back. Okay? We are going to punt to the other machine. We don't know what's going on We'll be right back. We'll be right back. All right. Thank you. So I read that everybody But I think we're we're alive now Hi, my name is David Gardner. I'm a dotnet developer based in Adelaide, South Australia. So There is an Australian accent Do sort of call me up if there's anything I say that you don't understand my talk today is on Packaging and projects and the new project system And how we can use that even if you're using dotnet framework projects so this is all related to the New project system that first shipped with dotnet core and if we jump over to The right browser window So this is based on github. It's an open source project and You can see it's quite an active project. There's stuff happening there all the time the new project system was created Really because the old project system which was written for sort of C sharp and visual basic projects was really tied to visual studio So we're only going to work on Windows. So for cross-platform support They needed to come up with something new and it's also given an opportunity to To sort of rethink how it's all implemented makes some performance improvements So do you have a look at the github site? There's some good documentation on here on what really makes up the project system and also things like a feature comparison What what things are in the new product system that aren't in the old one and vice versa? What hasn't been brought into the new one yet and And also yeah, just get an idea of what releases are going to have those features as well It is open source. So you can even jump in and add some Requests for features and maybe even commit a pull request as well. So the new product system Well, let's have a look and see how we can actually Migrate an existing project to use that. I'm going to jump over to visual studio So I've got a solution opened here. It's actually The source code for chocolate ease Choco dot xe command line tool. So chocolate is a Platform for installing software on a Windows PC. It's a bit like apt-get for Linux, but on the Windows platform And so I've downloaded the source code for their command line tool And I'm going to demonstrate upgrading the chocolatey class library to using the new project system format The first thing we can do and I'll just switch over to VS code just to show you what that looks like I've got so many windows here Ah Well, sorry So here's the project file for chocolate the moment if you've ever looked at a CS prod or a VB prod It'll look pretty familiar. We've got things like assembly references We've got every source file is listed there individually That's part of this particular library. We've got other things like embedded resources and and Project references and a few other bits and pieces as well. So that whole file there is around about 371 lines long Okay, let me go out the way So the first thing we can do is just a small thing. We've got new get package references here And so one thing we can do is actually migrate those to use the new package reference format And one way we can do that is to use a little wizard that should normally pop up here in this menu and I right click on the References node if it doesn't then just open up your package manager console window and by allowing that to happen Then that menu item will appear. So just if you don't see it You just need to do that step first is to initialize it We then see all the current list of packages that we're using in this project We'll also see a couple here that have been put under the transitive dependencies Section and what that means is that these two packages. We're currently referencing those but we don't need to Going forwards because they're actually dependencies of RX link and so we don't need to directly depend on these RX link is going to bring them in for us. You can choose to still depend on them if you want But we don't need to so I'm going to hit okay It's going to uninstall those packages from packages.config and It's going to Bring up a little log file to say what it's done Close that and close this file, which I think was to do with uninstalling the packages And so now I'll hit save and so our project still there. I'll switch back to VS code too many things open Where's it gone? There it is. Sorry, and we'll see down the bottom of the file here We now have a new item group there with package reference So I still haven't converted the rest of the project But we can already start using package reference here rather than packages.config and so we're already making use of The transient dependency so we only need to reference RX link in this case and we're getting those other two packages in So our line count is down a little bit. I'm just going to copy That in the one clipboard because we're going to use that in a second and Back to the project now. So we've done that up. Let's keep going and I'm just going to jump over and the next thing We do is actually convert the Project itself to the new format and one easy way of doing that is to use a command line tool so And we can use .net the command line tool out to create a new project files I'm going to a .net new class lib and the name is going to be chocolatey But hit enter on that. It's actually going to complain and say hang on that file already exists. Are you sure and I'll say yes? I am so I'll run that and That's created a new project file. I switch back to VS code and We'll see that now our project folders really small. That's fantastic Possibly even a bit too small by default it sets the target framework as net standard to zero But our project was actually targeting dot net 4.0. So I'll change the target back Because we're not ready to migrate our code base to dot net standard yet I can paste back in my package references Because they're going to work as well. Now switch back to Visual Studio and you'll notice. Yep, that project's changed I need to reload it And Here we go, and it looks pretty much the same So we've still got all that source code files there and now I can right click on my project and I can edit the project Without having to unload it. So that is a great feature of the new project system We don't have to unload edit reload and wait forever. We can edit the project file live. That's fantastic We've got our project references there. So if I expand this new dependencies node here I can see mine you get packages there all nicely and we can even see those transitive dependencies There's those other two packages underneath Rx link. That's looking good. So what else do we need to do? So normally you'd probably use your version control and do a diff between the old project the new project to To figure out what things you do need to bring back in here. So I've got my package references done. I also have some Regular assembly references some of these are to framework assemblies and some of those are to other libraries that are in my source code repository, so I'll bring those in and just hit save and then the other thing I need is At the moment, you'll notice we've got all the files Are included in the project. We don't need to list them anymore Because by default the new project system includes every file that's under the directory of that project file But in this case the old project was also linking to a file outside of that directory hierarchy So I do need to bring that in and so that was this file here The other thing you'll notice is we've actually got a new file here. So when I created that project file it also created a Just a placeholder class file. I'm going to delete that and One thing to keep in mind is that because the project system now is including every five-order fault That means if you had any files in your old project that were on in sort of version control or on the disk, but Not in the project. So you excluded those from the project. They're going to suddenly Reappear in the project. So it may be that before you do this kind of migration you clean up all those files first just to avoid Any problems with them sort of reappearing in the project Okay, so we've got our solution file there The and so one more thing we need to do a couple more things is we need to add a project reference back That was in the old project. So I could just go in here and use the GUI for that one And we'll see that just added a project reference element there The other thing we had if you remember quickly when I looked at the original project file There was some embedded resources there. So I better put them back in because by default Files that are not source code files for example this config file have a build action of none. So I'll change that to embedded resource and hit save and we'll just jump back to the project file and see what happened there So by default any other file is added to the none item group And so by changing that to embedded resource It's added this line here Which is we're going to remove that file from the none group and then down the bottom It's going to add that file into the embedded resource group like that I've got a few other files. I need to do the same for that. So I'll just find those and They're under here So again, I could just use a diff tool and just sort of copy those over from the old version if I knew Which ones Needed to go over there change them to a better resource. Okay, that should be pretty much it Let's try and build this project and see how we go and We got an error Okay, so what was that error? I'll bring up the error list so we can see it there as well It's complaining that we've got a duplicate of all these attributes. So what's going on there? I'm just going to grab that out of there. So it turns out the new project system Has it that's a nice feature so let's just find where those attributes are declared at the moment So normally you'd often declare those attributes in your assembly info file If I open that actually there's no attributes declared there, but there was that linked file that I added in let's have a look at that one and Sure enough, yes, that's where they're being declared But they're only declared once so where's this duplicate coming from or the new product system actually generates these for you You don't need to define them yourself if you don't want to However, in this case, I've already got them here. I don't want the project system to do that So how do I turn that off? Well, you can just set a property in your project file So I'll come back up here and set that to false and if I build my project now Let's say yep, that error is gone. So that's good. So we just had at the same Properties for all the other attributes because we've got them already there drop them in and now if I build Oh good. And so in fact if I build the solution and Jump back to my PowerShell window. I think I might even be able to run the console application. So In debug Choco See if that works and it does. So there you go. We've managed to migrate one of our Projects in this solution to the new format. We'll switch back and actually we don't need to do that So we're now down to about 75 lines from about 360 I think it was before so our project file is a lot more compact and The nice thing is because we're not including every source file in this project It means that if you're adding new files or removing them, you're not going to be modifying this file So just one less thing to worry about merge conflicts Okay, well we here we added some package references in there There's some other nice things we can do with package references. One of the things is we can Use floating version numbers. So you might think well actually I'm happy to take whatever is the latest version of Rx link 2.1 dot the highest number that's out now, or you might be really brave and go Yep, whatever version 2 is I want I want that one and I want the latest one of that And actually if we hit save on that We'll notice that the build system goes away Thanks for a bit and then realize actually the latest one is 2.2.5 So it's able to to load that in pretty quickly But that's even quicker because I've already done this before so things that cached on my computer We're looking at this and we're thinking that's good And it's nice how we've got our version numbers here But if I've got a solution with a lot of projects and I want to upgrade a package That's still going to impact a whole lot of projects with changing all the version numbers So wouldn't it be nice if I could centralize How I'm versioning all my packages. Well, yes, it would so let's jump back to VS code And I'm going to create a new file here under my solution and I'm going to call that file directory dot build dot targets and This is an MS build file. So I'm going to make the root element project I'm just going to paste in I don't group that is copied out of my other project and I'm just going to change where it says include. I'm going to change that to update and hit save and by doing this That file is now picked up by the the project system And it means I don't need to specify my versions here anymore And in fact, I could go through and delete all of those And I'll do that actually Get rid of that one and I'll bring in a new one Which is a little bit more succinct So now and we can see that in fact the version numbers are still getting picked up in visual studio here it it's loading that directory dot build dot targets file and Including that with each project file under the solution So you can also have a directory dot build dot props file which is sort of prepended to each project and the targets The L file is sort of appended to each project and the syntax the L switch back to that file Really is that rather than include we've got an update. So this is going to find any Items in the package reference item group with this name and it's going to set the Version metadata to two dot one dot three and so that's how we're able to still have these version numbers here So now with that one file I can centralize all the version numbers for my packages One thing to be aware of with that though is It's very convenient for managing versions the the tooling in visual studio I can still go in and say manage when you get packages to to see if there's updates But if I try and apply those updates, it doesn't know how to update directory dot build dot targets So you'll you'll still want to go in and manually update Those that file if you want to do a package update Okay, moving on Another thing with our project file while we're up here is the SDK attribute This is a new addition to the the project file format and you'll notice that we have Microsoft net dot SDK there So that's the sort of default value that was created for us If you create a unit test project, it'll have a slightly different name there But the interesting thing is that this name we can put other values in there And so for one example of that I'll switch over to my browser. And so another Developer quite well known in the dotnet community. Orin Novotny has created a Package called MS build dot SDK extras And so this is a new get package And if you use that name with that SDK attribute then you it will download this package And or add some extra functionality that that Orin's implemented. So in this case this package does Generate reference assembly. So if you're creating sort of class libraries Are they gonna be people gonna be using that may be something of interest But also just to see how Orin has managed to to extend the project system with a custom SDK Cool Alright, so we've seen how to generate A migrator project and that's all worked really well. I'm now going to show you a few little areas where in Me doing this I've encountered some some differences in how the old project system a new product system work so the first one of those is Looking at Generating files as part of the build process and how they're included So this is something I've seen in a couple of different places where you have a project or a solution where The app.config file is not committed to version control and so Essentially because every developer has their own Connection string and their own preference for logging and so to avoid everybody fighting over an overriding everyone else's config We don't commit the app config Don't know what keeps doing that We commit another file and in the project file We have a build step that just checks see if there's no app config then I'm going to copy the app default config To app config if there is one I'll just leave it alone So that allows the developers to have their own customized settings in this file and Sort of work and everyone's happy one thing I did notice though is if I open this Folder here and we look in the build output folder is There's an xc and a pdb, but there's no xc.config file there now if I built this project again Then it would create one, but the first time it didn't so if I delete that app config and do a build We'll see that Yep, there's still no config file there So how can we make sure that first time around that the the config gets copied out correctly? So what I discovered was Presumably just a slight change in the sequence in which things happen in the new product system I just need to include this line here to say that when we do do a copy We just update the nun group with that file and then the build system is able to pick that up later on and generate that so File again, we'll Build our project again and we've got our config file back So that's good So that's just one little thing that I need to do just to to make things work properly Particularly you might want to use this Because even that that first time is something that would probably happen on the build server. So something to be aware of Okay, the other thing That I noticed is That and you may have noticed this too already is that the output path for new product system projects is slightly different so I've got two console applications here. I'll run the first one. It's a very simple application It just looks for a file loads that file and just outputs some content from that file Which happens to be the program.cs file. So not that exciting That's using the old product system the same application migrated to the new project system we'll run that one and We actually get an exception it failed it couldn't find the file to open it and the reason is that Under the new product system, it's not just bin slash debug. It's bin Debug and also by default the the target framework name So there's our XE there and for most of the time that's that's quite reasonable and one advantage of that is actually It one of the reasons that they did that was because you can Target multiple frameworks. So I can go in here. It was actually I want to target .NET 4.5 and .NET 4.5 4.7 and so it needs two different directories to output those two But if you're migrating a sort of a legacy application, I've seen this in some unit test libraries that I've worked on where they're loading data files from the project itself and so one way to To go back to the old wave Output path is to set this property here pen target framework to output path set that to false and then things should work if I rebuild that application and press F5 Everything works again. So normally you wouldn't do that But just in rather than having to update all the logic in this Application straight away. I can set that and then sort of move on there I can come back and make that and that sort of update the code later on if I want to Okay All right, we've seen a couple of things with sort of dealing with Sort of differences in the the project system We're now going to move on to a new get packages. So both consuming them and creating them. So in this example here We've got some new get packages. So two class libraries that I'm going to that are creating new get packages I've got two console applications that are consuming those new get packages. So I'm not using project references I'm using package references here The old ones are using the old product system the new projects or the not old ones are using the new product system and so here I've got my old class library, I've got a Text file there and that's being added in as content in that new get package and in the old Application sure enough the package that file from that package has been included in this project And it is there under the project file However, the new Project system project is also referencing that package, but it doesn't have a text file one there The reason is that there's been a change with that with using package references that any content You know as in files that are using the content target are not Included in a new product system project So they anything like that needs to be updated to use Content files target and so the example in this project. I'll open up The project file is that we've got our text file new here So it's not only going in content so we can still work with older projects But any new product system needs to be under content files And this also shows that we can generate a new get package from the project file And we don't need to have a separate new spec file So we have a generate package on build property set to true. So every time we build this library It's also going to create a new get package If you can't remember what that setting is then just open up the project properties And you'll see there's a package tab here and that corresponds to this option the generate new get package on build There's also all these other fields that you can fill in that are all the Values that are the metadata that's going to be added to the the package as well So you can fill those in so that you don't need to have a new spec file necessarily To generate a new get package, which is another nice optimization one last thing to worry about So if I using that package and I'm using it in a project that's also using the new product system We'll see that this text file new We've sort of said that that Should appear under the special directory so in this project here sure enough There's our special directory and there's our text file new And one other thing to be aware of if we hover down here. It doesn't quite show up So I'll just select that value. This is the path to where that actual file is It's not located under our project anymore. It's actually located under my user profile So be aware of that that the new product system package references the packages are unpacked in this directory Under the user's profile be that the the developer or the the account that your build server is running at So that means again if you've got code that's making assumptions about where these files end up You're gonna have to change that code and so again, I've encountered this where was using new get packages to to wrap Backpack database files for use with Integration tests and so I had to change those packages to be able to find where those files were so that we could run those against the database All right moving on another scenario I've got a Solution here and I've got a class lobby that I'm creating a new get package for because this class lobby has some Fantastic business logic in it. I'm pretty sure that this business logic is so good because it's it's bug-free I'm pretty confident of that and I'm sure the other developers in my company are gonna want to use this because they love bug-free code But I'm also using this as a project reference for this tool that I've got here that's doing some fantastic stuff and So this is a new get package tool So I'll show you in the project file. I'm using is tool equals true I want to package this up and distribute it as a new get package, but it's an XC and So if I do that I'll do build and I'll show you there's some problems here that if I go to File Explorer will open up that package Using the new get package Explorer Okay, so it's a tool project. So it's gonna put things under the tools directory But we've only got the XC. We don't have the the linked assembly that we're also depending on with that fantastic business logic in it We've also Added a dependency here. We're depending on this other package, but we're a tool package We don't want that we should all be self-contained. So how can we fix that? so let's go back here and first of all to Bring in that ref that project reference. We need to hook into the the build process here So I'm just gonna uncomment this line which allows us to hook this extra build target in and This build target just goes through any project references and make sure that we're copying Any of those project references to our package output? The second thing I want to do is remove that package dependency because we don't want that for a tool package So there's a private assets property that I can set For the project reference I'm gonna set that to all what that does is it means that as far as new get goes this reference I'm using it, but no one else needs to know about it You can also see this through the GUI if you expand dependencies and Projects and down here in the properties. You'll also see private assets include assets So if I hit save then We should see that down there Okay, if I hit run I'm gonna rebuild everything and Just feel like I'm gonna do it again. If I go back open up that package again. I'm hoping That now I don't have any other dependencies and in my tools I've got both my assembly and the XE So that's what I want. That's good Okay moving on Okay, different scenario now. We've got a new get package and My developers that are using my package, they'd like to have a better experience using that package as far as if something goes wrong it'll be nice if they had other PDB's and Previously you would have said David don't include PDB's in the new get package because they're so massive and they just make it so big But we now have portable PDB's and a portal PDB is a lot smaller So it is conceivable to include that in the package itself And I'll show you what I mean in this example here. I've got a Library and the library itself is 4k and the PDB is only 1k So rather than the debugging symbols the PDB files being much larger than the Output assemblies. They're actually generally a lot smaller now. So adding that to a new get package is no big drama so we can do that and So if we edit our class library, we just need to change a property here To say I don't just want to include the DLL. I also want to include the dot PDB as well And I'll just increment my version number For the package as well so that we can do that I'm going to rebuild I'm just going to rebuild that package and Then we'll switch back To here and so I've now got there's my package. I'll just open that up just to show you that we do actually have Both the DLL and the PDB there. That's good And now just to also prove I've got nothing up my sleeve. I'm just going to delete That directory I'm going to come back down here. I'm going to delete Object in the C sharp source code for that as well. I'm going to come back to the project. I'm going to remove that library from the solution and now Having done that I'm going to upgrade these two projects because these have package references To that package. I'm going to upgrade those and I've just configured it to look in that directory So the upgrades go on ahead. That's all good. I'm now just going to rebuild everything here And we'll see how Now that we've got that PDB inside the package We'll see what the experience is of a developer trying to sort of use a run a program and debug a program That's using that package so Here we go So there is a problem it is going to throw an exception. That's expected However, if we look down here, and I'll sort of zoom in a bit for that There is it doesn't it doesn't know what the language was and it doesn't have the line number. So where is that? What's going on? Well, it turns out that there is this little bit of an issue with Dotnet framework projects that have portable PDB's in a new get package It's not copying the PDB from the new get package output to the Program output so then it doesn't find a PDB. So how can we solve that? If we have a look at this other project here, we can solve that by adding another package reference. So So people have figured out that There's some extra build steps we can add in that will will do that copying so if we add the reference to this new get package source link dot copy dot PDB files and We debug this one. So the only difference is adding including that extra Package reference, which is changes our build process If we debug this we'll still get the exception, but we do get the line numbers. So At least we know what line that exception was being thrown on so that's a bit better experience So so that's all good Okay, so our developers are happy with that The other thing we could do I stopped debugging this is even add Support for source link. So what that will do is Allow consumers of our package to actually step into the source code for the assembly that they're debugging from our package So I've already unloaded the the class library that we were using here So rather than trying to bring that back, let's just imagine that this project was also being packed in a new get package So all we need to do to make this Include information for source link is add in one extra line here and that is another package reference and So depending on what kind of source control you're using so or what source control provider There's different packages to help out with this. So in this case if I was using VSTS or as it's now known as your DevOps With git I could use that one or if I was using github. I would use that package and What it does is by including this package it updates the PDB to include some extra data That the debugger can then read and know where the source code is for this particular package So what does that look like? Well, let's see an example. I'll jump over and bring up a Project so what I've got here is an ASP net core web application and I didn't want to do that and The nice thing about all the latest ASP net core Projects is that they all they bring in all their functionality through new get packages that support source link So if I press F9 there to set a breakpoint, I'm gonna hit F5 to launch our application under the debugger and So there goes our web page and we've got our breakpoint here. And so then if I've got all the Everything set up correctly. I can press F11 To step into and now I'm stepping into the source code for ASP net core And so you can see there the path of that file is some path somewhere on my computer It's it's already been downloaded the first time you do this It will take a little while to go and download those files. I've already done that before so it was pretty quick the second time around But I can step through I can press F10 or F11 and step over and step into and jump through all that code So if I'm trying to debug a problem and I don't understand what's happening But behind the wrappers then I can can use that source link to step into the original source code so that's pretty cool experience and Just press F5 to finish that Cool Yes Yes Well, I can I can do I Can do better than that. I Well don't panic Yeah, no, it's all good because that was my final demo and so just wrapping up So it's all good so yeah just wrapping up just to keep things on time So I just showed you the new product system and how we can really reduce the size of our projects and reduce the amount of change We need in those particularly with package references. We can centralize version numbers in directory build targets There's a little sort of differences in dealing with generated files and the output paths We can generate new get packages directly from our project files And include PDB's portable PDB's in our new get packages and even add source link and Yeah, give the consumers of our packages a really great experience So all the demos I've given today are up on github in a repo and that's it there And I would try to include links to further resources and also links to the original sources for a lot of those tips because Don't be under the impression that I'm that clever. I just know how to search for stuff So when I encounter problems often I found someone also already figured out the solution so Some good resources there And I'm done. So thanks for everyone for your attention. And yes, if there's any questions, I'm happy to take those Yeah, that's cool. Yeah. Yeah Bye


Okay, well while I have the camera set up, I'm going to unbox this L-Max Just a tanner lock. It was one of the last locks I haven't fiddled with in the Bosnian bill traveling lock Box, so I'll just take it out and do a superficial examination of it and then see if I can figure out how to open it Just looking at this I've had it sitting on my table for a couple days now, and so I've sort of stared at the at the packaging and one thing I noticed is That Right there in the corner it says Abloy key or leave a tipo alloy. I can't read Spanish or Italian or whatever that is I think it's I think it's Spanish But I thought that was kind of interesting Because they're using a trade name for a lock that is clearly not made by ASA Abloy And which is Made in China, and I'm pretty sure Abloy doesn't make their locks in China That's interesting. This is already this is something itself. I'm just gonna Hopefully use this cool Tool To open this up if I can I Supposed to make this safer Safe for me may not be as safe for the tool anyhow as usual the case Harder to open now. I don't know about you, but that doesn't look like an Abloy key to me I've got a number of Abloy locks and one of them has a key that looks like that quite on Bidding is zoom zoom focus Okay, bidding is Moderate has actually more bits than a lot of these Chinese locks do and there's the There's the keyway, okay Now this has all of the hallmarks of one of the locks that of the locks that bill was eviscerating on his series of Bill brutalizes the Chinese discotainer locks and I assume that if I were to take a my screwdriver and Or a different screwdriver and stick it in there that I could Very likely get that out, but I'm not going to do that because it's not my lock and Someone else might like to do that so but what I will do is just see if I can operate it and I Don't know if you can hear that, but that's pretty crunchy in there You can Pretty crunchy, and I would say pretty lousy tolerances And it opens Okay, and See but Does have a Focus Focus No, maybe you can see it's hard to tell on the lcd screen But there is a ball there and we have to assume that there's another ball on the other side Cutouts are not too bad Does appear to be A stainless steel Body some time now that's steel that's steel. So not stainless. It's just regular steel And we can do a quick test somewhere out of the way Now that's a pair of tweezers This is not even particularly hard metal and that is scratching the living bejesus out of that body You can see my Handy work there. I'm like a few more marks just so you can see Okay, these are just tweezers So I may be ruining but I'm making some decent gouges in there So if tweezers can do it a hacksaw is gonna eviscerate that and just the body of the lock in moments Let's test the shackle Again with the tweezers It doesn't look like much, but I think the chrome is coming off and I'm gouging the metal a little bit but not too badly My handy-dandy carbide should cut this a little better But I'd say that's that's a decently hardened shackle. That's not too bad So that that might be legit I'm not gonna bust out a hacksaw and mess it up further Anyway, so there's that a Hermax or our max if your French I don't know how the hell you pronounce in Spanish, but it's a Charlie Hotel Romeo dash six zero alpha block just a tainer I can tell by Just the feel I mean it sometimes doesn't even want to You take it out and it doesn't even want to open but So that is steel there. Let's just test that this is the thing that's protecting the lock core and that You can Hopefully see my hand to work again and see the scratch that the tweezers made in there So that's not hardened steel so well, I'm blabbling on about this lock you've got a Very nice looking, you know nicely machined smooth and everything lock With a what I would say is probably a pretty decent shackle for this grade of lock But you've got a body that is soft steel and you've got the thing that is protecting Your core is made out of a soft steel And I think I can even see the circlip There were the little retaining spring that holds this thing in so I'm certain it's one of those ones like they'll had and I'll give someone else the pleasure of destroying it So Looks can be deceiving Kind of a neat lock, but I wouldn't say it's very high security so and it's definitely not an Abloy Despite what they say so There you go Hermax lock opened unboxed. I'm gonna go fiddle with it and see if I can open it with my very poor Just to tame her opening skills. We'll see Thanks for watching Pardon the horrible camera work look at the beautiful San Jose, California sunshine and Have fun And keep it legal Cheers. Thanks for watching


Have you ever felt let down or even betrayed by someone you thought was a true friend? Picture this. You're excited about a new project you're working on. You share the details with this friend hoping for some encouragement, but instead you're met with indifference, even negativity. That stings, doesn't it? Even there for them, but in your moment of need they seem far from supportive. With that said, here are the types of fake friends to avoid at all costs. The freeloaders. Have you ever noticed how some friends only seem to appear when they need something? Picture this. You've scored tickets to the hottest concert of the year and suddenly that friend who's been MIA for months is back, acting like your best buddy, but once the show's over they're back to being distant. Sociologist Dr. Karen Fingerman calls these people freeloaders. She says they're more into the benefits you offer than your friendship. They might leave you feeling used and undervalued. Does this sound familiar? Remember, true friends value your presence, not your possessions. The one-uppers. Do you know someone who always seems to one-up you? Imagine sharing your good news about a promotion and they immediately jump in with their own better accomplishments. Psychology professor at the University of Massachusetts, Amherst, Dr. Susan Whitborn, suggests that these one-uppers are likely dealing with their own insecurities.  But remember, their need to compete isn't a reflection of you, but of their own insecurities. Your achievements are significant and worthy of celebration. The drama magnets. Ever had a friend who's a magnet for drama?  It's exhausting, isn't it? Relationship expert Dr. John Gottman warns that these drama magnets often cause unnecessary stress by blowing small issues out of proportion. It can be emotionally draining to be around them. If you find yourself constantly playing the role of the calm in their storm, it might be time to reassess that friendship. The gossip mongers. Ever felt uneasy around a friend who loves to gossip? You trusted them with a secret only to find out it's made the round. Feels like betrayal, right? Psychology professor Dr. Frank McAndrew points out that these gossip mongers often prioritize the thrill of gossip over maintaining trust in friendships. It's hard to feel safe around them, isn't it? Remember, your feelings are valid and it's okay to step back from friendships that consistently make you feel uncomfortable. After all, genuine friendships are built on respect, trust, and mutual understanding. The fair weather, friends. Ever notice how some friends are only around when everything's going well? That time you needed support during a rough patch, they were nowhere to be found. Psychiatrist Dr. Robert Rauney explains that these fair weather friends aren't really invested in your well-being. It's a lonely feeling, isn't it? A true friend should be there with you, not just in good times, but also when you're navigating through life's challenges. If they're absent during your struggles, they might not be the friends you deserve. The one-way friend. Does it seem like you're always the one making efforts in your friendship? You're constantly there for them, but they vanish when you need them. It feels unfairly one-sided, doesn't it? Counselor and professor Dr. Susandek is white, describes these relationships as draining and potential sources of resentment. She believes true friendships involve equal contributions from both sides. If you're constantly giving with little return, it might be time to reevaluate.  Isn't that what genuine friendship should be like? The negative nellies. Ever notice a friend who constantly downplays your achievements and dampens your spirits? Perhaps they always seem to find the dark cloud around every silver lining, draining the joy from your moments of success. Psychologist Dr. Elaine Hatfield highlights that chronic negativity can significantly decrease your overall happiness and satisfaction. It's essential to surround yourself with friends who uplift you, not those who incessantly pull you down. Remember, you deserve a friend who celebrates your victories with genuine happiness, rather than one who subtly belittles them. A true friend will be your cheerleader, sharing in your joy and bolstering your confidence. So, have you experienced any of these signs with someone? Feel free to comment down below. You can also share this video with someone who might relate to it. Until next time, take care and remember, you matter.


Okay, so this slope here, 0.0246, is roughly twice the standard error in the slope. And in fact, the ratio of the slope to its standard error is something that we call t. And in this case, it's roughly 2. It's a little larger than 2. That means that the slope itself is two standard errors away from zero, in this case on the positive side. Typically, when t is 2 or larger, that signifies a result that's significant at the .05 level for a two-tailed test, which is what we see here. So in essence, when we see a t value of 2 or larger, typically that signifies that the results of the regression are statistically significant, at least for a large sample where n is larger than 100 or so, and as long as we don't have the problem of autocorrelation of residuals, which we've talked a bit about before. And so our next topic is going to be to talk a little bit about this issue of autocorrelation in this example.


I'm out. This is an introduction to software defying radio and the wireless village. And the importance between these two concepts for this talk is the SDR stuff we debuted at DefCon last year for us and we had some pretty good presenters and players and all that sort of stuff and we're hoping to bring everyone in this room into there throughout the conference, not at once, so don't rush it. So who we are? Well, who we are is not entirely too important, but what we do for you is, and what we do for you is provide a safe environment that you can practice all the Wi-Fi stuff and the SDR stuff for contests and general experimentation. I'm St. Claes. This is Kahuna. And one thing to note is when you do it, when you do it with us, we keep it legal. So remember that. One of the things you also need to remember is not just the two of us. There's a lot of people in the background that helps us with this either year. Some of them are here, some of them are not here, some of them are up getting the wireless village set up now, going through all the contest stuff. Their names are here. Not going to read through them, but come on up and meet us.  They do a wonderful job. So for the next 45 minutes we're going to cover a variety of different things to get you interested and able to be prepared to play in the contest over in the village. It's not just hardware, it's also understanding regarding some basic radio communication concepts. And one of the many things that we see that get people gummed up or jammed up in the competitions that we have is the lack of understanding of the physical layer components of radio, which is radio. Interestingly enough. So the agenda for what we're going to be coming over for you is right there. We're going to establish some basic knowledge. How many hams do we have in the room? Yay? Awesome sauce. How many hams are going to become after this conference in this room? How many people are going to take an exam if they're going to be able to? Alrighty. Okay, point of vanity. All the hams. Raise your hands again. All the hams, raise your hands.  Those of you that are not, keep your hands down. Thank you gentlemen. Yes, mics are dead. Ironically, wireless. Who's jamming us? Yeah. Alrighty. So the clicker's next. All right. Don't be concerned if you didn't bring what you need to participate in the contest we're having with you. There are vendors in the vendor area. Some of the ones that we know and have worked with or listened to here as well as there is a huge fries electronics here in Las Vegas and it's not that far away. We go there at least once every year because we find something we forgot. So, oh, I'm going to keep rolling. What I'm going to talk about next is transceivers. Those of you that are hams are familiar with these. These are what's called fixed transceivers in their amateur radio transceivers. Frequencies they operate on or HF, UHF, VHF, and sometimes multi-mode. Output power is about 100 to 200 watt standard. They run off AC. Some of them can run off DC for mobile but these are usually what are in your base stations and cost factors about $1,000 and up. Next is mobile. A lot of people do mobile. In your car, you'll find some of us have radios mounted in our car. These work a lot better than trying to use an HT in your car because your car is pretty much a fair day cage. So, you'll see these mounted under the dashboard in the trunk with remotes and stuff. Output power is a little bit less than the others. 40 to 50 watts. They run off 12 volts DC typically and the cost factor is a lot easier. I do know some people that use these for base stations. It's kind of a low entry point into HF radio and VHF and UHF. Not last but least what's called handy talkies or HT. These are hand held transceivers. These things are amazing. Most people that get their first license get a technician class license. You can use these 2 meters, 4 meters, 2 meters, 70 centimeters and you can get these little bowfunks for about $35. In the last long time, if it breaks, oh well, I bricked a couple of them trying to get them to operate on some weird frequencies and stuff. It's $35. Go buy another one. Some of the high end Japanese ones, the ICOMS, YASUS, will run you up to a couple of hundred dollars. And for those of you that just have an interest, don't know if you're interested or not, there is a workshop that's going to be going on here. You can find it in the schedule. It's going to be talking about Hamsphere. Hamsphere is a virtualized amateur radio area where you can go in. It's done across the internet. It's an install client on Windows. It's jar files so it runs on both Mac and Linux. And you can get a free 30-day trial license on it and you can play around with it. And you do not need an amateur radio license to work on this because it's not really transmitting over the air. It's a virtualized environment. But again, go to the workshop if you're interested in this. So the wonderful little bit is the components of software-defined radio. You can actually replicate all the things that you've seen and managed out of the typical ham radio hardware radios with a variety of software defined radios. And you can deal with kits anywhere between when you start buying them in bulk between $10, typically sold for $20, the RTL, all the way up to the Hacker F. And then this is not a camera because it is a Blade RF. The different radios have different capabilities. Be aware of the capabilities and restrictions. The reason for this and being very specific about it is at the end of the village we have some challenges that are built specifically for you need to have a Hacker F to solve the challenge or you need to have a Blade RF to solve the challenge or you need to have a USRP to solve the challenge because we're using that as a method to teach you the differences between the tools based upon their capabilities. But don't worry, the prizes are typically the inverse of it. So if you had a Blade RF, you're not going to win a Blade RF if you win the Blade RF challenge. Outside of that, you have a cost as a major delineator between the variety of different tools that are available to you. If this is going to be something new for you, just start off with the Realtek RTL SDR. You can buy them up in the vendors and in the village for the challenges for the SDR ones, that will probably get you about maybe 60% of the available flags. So it's easy for you to get into the complication of that as the degree of madness that I dive into the creation of flags. However, these things are out there. This is an awareness campaign on that part. Stop by the village if you even want to see them in demonstration as well. And because they now have speech detects, I have to say supercalifragilisticexpialidocious. Wait for it. Nice try. Some of the uses of these handheld transmitters are various modes of... Anyhow, the handheld transceivers and stuff like that is you can do satellite communications. Where's the red squiggly mark? There's a lot of that. Earth, moon, earth. Earth, moon, earth is interesting. You're actually using the moon as a reflector, send an RF signal up, it hits the moon, it bounces back down a long ways away. Packet radio is basically doing the internet over RF, except point to point. Radio teletype, which I did many, many, many, many, many years ago, is simply the old BOTOC code. You're sending radio signals across RF. And internet radio linking project is something fairly new. It's been around for a few years. I'm just getting into it. But essentially you use a low power handheld transceiver and you call to a repeater, that repeater hooks to the internet until another repeater, many, many miles away, and then it transmits to someone that you're talking to on the other. The way they do that is the repeaters have four digit IDs and that's part of the transmission that you use. Dual tone, multiple frequency encoded. You tell it what the code is in those four tones and that's how it recognizes and know which repeater to send to across the internet. And not last but not least is my absolute favorite international Morse code. Probably the oldest means of communications via radio waves around. Works fine last long time, not subject to interference and all that other stuff at a power through anything.  Before you jump on to the next slide, the last thing I'd like to add on to this one is that in the challenges and some of the many disciplines of software defined radio as you're going to be jumping around the frequency ranges and looking and trying to demodulate stuff, a lot of these basic principles that you will learn as a ham radio operator directly apply in one way or another when looking at signals and doing second analysis. So for instance Morse code is one and one with OOC on off keying. So you may see like a key fob transmitter using OOC and if you have a background or understand what Morse code is, this is a very easy concept to extract laid off of. Very similarly the stuff with the RTTY stuff, things along this line. So the other components that we have available to you regarding the challenges and the importance of the different SCR platforms is the ability to transmit and receive and whether or not it's full duplex or half duplex transmit or receive. So with the RTL it's only receive only. The HACRF will do transmit and receive and it's hugely affordable but it's half duplex. The Blade RF will do both of those things but it's full duplex. So for instance if you are trying to analyze cellular communications you can do it with both but if it requires you to interact with the device you would more than likely need to lean on the Blade RF because of the full duplex component. Similarly the USRP described as generally being the nuke regarding all this sort of stuff because not only is it a little bit more expensive, well it is more expensive than the rest of these things but it also has some modular boards that you can buy so it's a very dynamic platform. So as you progress through these things these are the recommendations that I would give to you as to how you can progress into software defined radio and then you also have a variety of other dirty little things that you can do like for instance turn your Raspberry Pi and other devices into transmitters. We do some things along those lines and you can even modify the code to do. The normal one is Pi FM it does wide band FM but you can also fairly easily modify to do CW or technically AM mode and narrow band FM as well. So if you are feeling adventurous enough this stuff is already out there. Parker GTFO has a write up regarding all that sort of stuff. Just make sure you get the right Pi. Exactly. The latest versions of the Pi's have quote unquote fixed the bug but you can still purchase the older ones and they still make them as well. So this is where I want to kind of start taking the devious rant regarding the SDR stuff and typically when I broke into this learning software defined radio it was typically a two step process similar to this slide of how to draw an owl.  There was not very much clearly articulated and easy to follow steps in between those two major components because I would see these talks and I didn't really realize that there was a lot of other magic happening in the background. So what we hope to be able to resolve regarding our classes here at DEF CON were providing workshops, their classroom environments. So bring your equipment follow along with presenters and work it with them. So that's going to be a huge major difference that we've done from the past. So the thing to remember about software defined radio is that there's pretty much just a straight up radio front end and keeping this as simple as possible. It goes through analog to digital or digital to analog converter depending on whether or not it's a transmitter received. And you can read the rest of the slides. However, what you're essentially doing is capturing a variety of frequencies off the air converting it from analog to digital and dumping it across into a machine that's going to be able to interpret it for you in a variety of different ways. So the thing that gums a lot of people up when they're first now trying these things is that they think that, oh, I can just buy, like, you know, actually have a very fun email chain regarding this very subject. But what's the difference between what we understand about Wi-Fi packet interceptions and software defined radio? Well, it's not really a packet. It's a raw IQ samples and I'm getting a moment ahead of myself. But the thing to remember is that with a Wi-Fi adapter, it's got firmware running on that radio and it's going to be doing Wi-Fi and Wi-Fi really, really well. Yeah, you can do Wi-Fi with an SDR, but there's going to be a huge tax. And I haven't seen anything past A0211B be ridiculously reliable. You can do it with some of the other platforms, but you could either buy this for $20 or a USRP for $2,500 to do Wi-Fi. Anyways, so pick the right tool for the right thing. Next slide. So you got to remember how it presents the information to you and it presents the information to you into components, IQ. And these are measures of the signal out of phase of each other so that you can reassemble the communication and a fun little program called GNU Radio Companion, which is kind of like the Lego block programming of, or the Lego Dactor or something similar of software defined radio. GNU Radio Companion, there's a whole series of classes involving that in the village I believe this year. Because it's, I personally also, it's a fantastic tool. There's a lot of weird things to have to understand about it, but in some degree I also feel like it's a little bit of gradware. In other words, it worked for me, I don't care if it worked for you or not. Different versions of it, you can take the same sketch, GRC sketch, which is what you use to generate your receiver or transceiver, and give it to someone else and it just doesn't work on their machine and typically that could be either different Python versions or different GNU Radio Companion versions. So it's getting better, it's made massive strides as the community has moved forward. But the, what you're going to need to do and understand with GNU Radio Companion is how you're collecting that information. So choose your weapon wisely per se and it has to do with how many samples and how, in other words how many digits in that floating point number are important to you for what it is you're decoding or demodulating. Also your frequency ranges are also equally important. I've, there's a neat little effect that happens with software defined radio where sometimes while in the real world you don't get any, shoot, I'm trying to remember the word, essentially it's false signals, but in the, what's that? Harmonics, thank you. It is morning and I haven't had anything really to kick me up awake yet. But the software component of it can sometimes lie to you, so be aware of that. So sometimes it's better to have two tools to help you out. And last but not least I've seen some other people feel like that they had the right tool in order to find out that they weren't able to remotely tune to what it is that they were looking for and subsequently to that they may have found the signal from it but they're actually measuring the harmonic from it which is not so good. Next slide. So the, as I gave an interlude to, or an allusion to at the beginning the physical layer component of this stuff, the antenna piece to this is very important to understand. When we are at DerbyCon last year we had a Fox and Hound activity that occurred and no one found it because these people had their very directional antennas and they didn't understand that the, there was a side lobe that made the antenna say that the signal was stronger moving pretty much up and over behind their shoulder when they were trying to hold it in front of them. So they thought the Fox was in a restaurant that was closed when in fact it was in our room the whole weekend. So they're pointing it up at the restaurant and they think it's at the restaurant when in reality the strongest part of the signal was shooting up and over behind them. So test your gear, know your gear, understand some of the basic concepts regarding radio communications. Antenna system and so this is where I kind of get my geek on. I built these things, I've designed these things, I used to enjoy just taking a random piece of wire and tuning it. But there's three basic components to a antenna system. You've got your transmitter that we've talked about. You also have a matching coil which is sometimes needed, sometimes may not be, and then a random length of wire or a tune length of wire. And the length of the wire that you need is determined by the wavelength which is the operating frequency that you're working at. So antenna systems, the things to remember is the antenna must match the transmitter frequency. It also has the ways to do that is you can prune the length of the antenna, you can use an antenna tuner to use a single antenna over multiple frequencies or you can create what's called a matching section which is usually an inductor and a capacitor in parallel that you can use that basically tunes it. Another important factor is the polarization. Optimum transfer of a magnetic wave, a electromagnetic wave takes place when the transmit and the receive antennas are of the same polarization. There's essentially three polarizations. Horizontal, that means the electrical component is going this way. Vertical, it's going this way. And then circular which is most often used in satellite communications, or helix, is it's actually operating a little bit in both at different times. So crash course, the frequency here if you know the speed and essentially to determine the way I like to think of it is you know what frequency you won't, so the frequency will determine the length and what the standard is is about 300, or the speed of light, 300 million feet per second, meters per second. Yeah. Divided by frequency and megahertz will give you the wavelength in meters and the speed can be determined and that's the frequency in megahertz but these charts are easy, it's all over the things and it's one of the fundamental questions that ham radios have to talk about. So what are the main characteristics of an antenna? There's three main characteristics, reciprocity, that is the ability of the antenna to transmit as well as receive. You won't be able to use an antenna to transmit well and receive well. Then there's gain factors and any time you have gain you also have loss. I have seen antenna systems that put more loss in than they did gain because they weren't matched or they used the wrong impedance for the co-actual cable, somebody grabbed cable TV cable instead of RF cable, 75 ohms, 50 ohms makes a difference. And then the polarization. So gain is the ability of an antenna to increase the signal strength or to transfer the energy, the RF, into the RF electrical magnetic wave. When you have gain you're measuring if like the cantinas everybody uses for wireless and stuff are typically 14 DBI. That means that that antenna gives you a 14 decibel gain over a measured isotropic antenna and the isotropic antenna this normally used is a quarter wavelength at that operating frequency. Who has a nice little RF anechoic chamber that they can test their own cantinas and all that sort of stuff. Awesome. So know your radio antenna because I've seen so many of them be poorly performed and people just follow the instructions and they're just clipped or bad solder joint. And you'll see more on that later. And then antenna polarization as I said they're horizontal, vertical, circular and it is the electrical component of the electromagnetic wave that determines what the polarization is as you can see in the diagram there. Essentially all antennas boil into two types. They're either omnidirectional or they provide some directionality. Omnidirectional I like to say radiates equally poor in all directions but they are very, very useful. A lot of times in doing fox hunts and stuff you use an omnidirectional once you get very, very close. Once you get very, very close your directional antenna starts looking at harmonic side loops and stuff. So I found using a low gain omnidirectional kind of helps me a lot in those situations. It's also useful in most mobile applications. People that put these verticals, magnetic verticals like I use for war driving on top of their cars. Those are omnidirectional because you want to pick up signals from everywhere. When you get to directional signals you can see here you can see where it's showing the amount of decibel gain over the isotropic and this is just a radiation pattern chart. You'll also see those side loads that Rhett's mentioned off there so you can determine why some people may think an antenna or transmitter is over here when actually it's over here they may think it's over there when it's over here. So you need to know your antenna systems, how they operate and what characteristics they provide. Speaking of characteristics there is a sky wave. Sky wave is usually what's used for most very long-haul transmissions, radio waves. When you transmit a radio wave it goes everywhere indiscriminately based upon your antenna. When you use a directional antenna you want to focus it that way. It's going to travel everywhere from the earth's surface all the way just straight up and down depending upon the design of the antenna and some of that antenna depending upon the frequency will go up into the ionosphere and be reflected, refracted back to the earth's surface at a greater distance. This is typically happens in the high frequency bands but sometimes happens at UHF even VHF frequencies. There's also a characteristic of a radio wave that it will tend to reflect off buildings. You get this a lot in using the handhills and stuff like that in cities where you've got buildings with glass walls. Those walls will act as a reflector and it will reflect the signal around the building. There may be a building between the transmit and receiver and you not know that it's there because the signal is being reflected around it. By the same thing non-flat surfaces there's a characteristic called refraction where it tends to bend. This is what gives you some signals that will go like over the curvature of the earth, beyond line of sight. Okie dokie so we're going to change topics slightly a little bit more and focus more on the SDR stuff. Taking some of the information that you just got from John regarding the antenna theory things. So the the thing that I've observed in new students and people trying these sort of challenges is that they mismatch their antenna system. They will take their omnidirectional antennae and extend it as far as humanly possible for a signal that has a waveform propagation that is nowhere remotely near what it is that they're picking up. So what do you do when you do that? You introduce extra noise into your signal that you're capturing. So make sure that you have the right antenna system for it because in addition to that there are instances in which when you capture too much RF energy you can blow things like preamps or the receiver in it and I'll get into a little bit more detail in that in a moment. There you go. So the software side of the things, let's focus on some of the things that you'll want to be able to use in this challenge, in this sort of environment. Yep, there are billions of, not billions, thousands, hundreds of tools. But the two main ones that I've seen people lean on for just signal identification has been primarily GQRX and SDR sharp. One is Linux OS X, SDR sharp is definitely Windows. Yeah, you can run it in Linux and OS X but we have some political reasons as to why we don't do that anymore. And the I mentioned earlier Gunnu Radio companion is pretty much the really deep dive go-to tool when you need to start to use in a microscope for the signal that you're looking at. Well what about the signals?  The majority of the time that I now do SIGINT is based on listening to what I'm hearing first and then taking a look at what I'm seeing on a waterfall so you have a better time domain sort of representation of the signal that you're looking at. And then you can go to this website where they have the SIGINT wiki where you can listen to other things that are, that people have captured, done some reversing already. They tell you where they were geographically when they picked up that signal. They also give you the time and I think they're now starting to capture weather characteristics as well. But they also give you an audio sample and a waveform sample so you can then compare it back and forth. So it makes things a whole lot more easier and quicker to identify what it is you're looking at just solely based upon hearing it and then subsequently seeing it. So go to that website familiarize yourself with some of the more common communication mechanisms that are out there and once you kind of know what you're looking at and know what you're dealing with it actually becomes very quickly a smooth sailing sort of situation after that. The, oh I already mentioned the slide but the one thing I do also want to mention on this was another really fantastic tool called BODLINE that allows you to more easily dive into the raw capture files. BODLINE has some goofy characteristics about it. One of which is file size that are greater than 50 megabytes but there's some fun hacks that you can do in order to get around that using file system, so FIFOs on your file system and anyways it just gets complicated. However the additional tools that are based upon the software side of things like the plug and play to decoding Dmod. You have DSD, multi-mon NG and smart net scanner. Pretty much a lot of these tools will do all the AFSK, FSK, OOK and all that sort of stuff out of the box before you're ready to go without having to do a deep dive GRC sketch or any other real heavy lifting. The slide, alrighty. So this is not a Linux only environment. You can also use Windows and OSX. Some of the tools are pretty well functional, some are not, but some of them also require other dirty little hacks. So for instance with Windows you have to kind of do a loop back for a virtual audio connector between what you're actually capturing and then looping back into the software that you're using. Sometimes I cost money, sometimes it doesn't. I don't care, I don't want to know what you do on that one. However one of the other more popular tools that's showing up that Scott's a really good, extensible set of plugins now is SDR Sharp. You can Google it and find it for yourself. Alrighty, so let's talk about some of the things regarding these little devices that you need to be a little bit cautious of when using and operating. Those things are also when you want to start testing the stuff at your house. So for the village we have a variety of web pages that have take home exams and practice exams. So you can do this stuff at home and test it at home. And then once you start getting that scratch and that itch, you're going to probably be curious about the other things that are happening around your residence from a spectrum RF transmission standpoint. So some of these things are lessons that I've learned and lessons that other people have learned. You have everything from the antennas that they come with to lightning static noise and clocks and drifts. So we'll get right onto that. With the typical RTLs when you buy them they come with these like goofy little antenna nubs and all that sort of stuff and I've seen, I don't have any in there because they're all junk. But many people will plug in their RTL and plug in the antenna that comes with it and they wonder why they're not really picking anything up at all. And that is a great photograph of an example as to why they don't pick anything up at all. Anyone see a problem with this? It works better if you plug it in and then connect it. So in some cases the solder is weak and with flexing and all that sort of stuff it just snaps off. Other times it's just not connected at all. So know your hardware, know your antenna because that's exactly how you're going to be capturing this information coming in. What I recommend for people on the antenna stuff, you can leave it there, is the connector heads and on various websites and at the vendors you can buy MCX to SMA adapters and then you can take the SMA adapter and plug it directly into or screw it into your antenna itself directly. On this slide lightning wants to be your friend. Don't be lightning's friend. The big thing to remember regarding your antenna systems is make sure if you're going to make it permanent and stand it up at your residence, pay attention to where lightning strikes are in your area, how frequently they are, the time of years that they come around.  The lightning arrestor survived, the ground bus survived, but the five foot cord between the radio to the lightning arrestor was brittle and toast. I'd rather replace a five foot ethernet cable than a three to five hundred or multi-thousand dollar radio or having to repull all that ethernet all over again. So be cautious about lightning. Static is another issue. Even on a nice beautiful windy day there can be static that's built up on your antenna feed system that sends a charge directly back into your RTL or your radio. Rubbing it will generate static. So having obscene these things with the connectors in them and the person moves the antenna and from D message you see it unplug and replug back in and what's happened is that a static charge was delivered into the USB device which subsequently delivers it into your computer which you don't want to have happened so be careful regarding static. An additional reason why you want to be careful about static is that sometimes these things do not come with a static protection diode. Sometimes it's there sometimes it's not. So I would crack it open, test and see. The few more bits of information that you need to be aware about are these, there's two manuals here and we also have them available on our website or we link to them on our website is noise reduction. So people will turn on their RTLs and we're dealing with someone right now who thinks he sees all these sporadic signals and it's either he's seeing clock sources out of his laptop or any other device around him and it's frustrating sometimes but you need to go through this procedure of identifying signals in your area and doing your best to reduce them. So that could be via shielding chokes. Those two manuals have a lot of information for you in order to reduce your noise. And one of the examples or two examples of noise that I have for you is based upon BFG. It's not what you think it's barrier, field and ground. Can anyone identify what the problem is with the image on the left where the noise source is? Yep that's the power cap. The reason why it's the power cap and both of these examples came from the book the second book that I linked to earlier is that that connector head is a plastic connector head so it's not adequately shielding RF signal that's coming across the ground bus into the actual computer itself. The device on the right who has ever dealt with combining metals outside. There's generally a rule of you do not put metals of different types next to each other outside for long periods of time because of rust. Can anyone identify the rust on that cap? It's based upon the ground bus going underneath the cap so that was actually a huge signal source for that particular radio system. The last few bits of information that you need to know is about the clocks. All these SDR platforms have clocks in them. Sometimes they're good sometimes they're bad. The clocks in the RTLs are not that great so what you need to be aware of is that as the RTL warms up your clock is going to drift regarding the device and so that's going to create a frequency offset for you when you're looking at the radio sources. So I suggest that you go to the NOAA weather station transmission sites in order to see what their center frequencies are to figure out your offset. Speaking of clocks, if you unify the clock sources on the RTLs you can do some really goofy things like being able to watch or observe more frequencies at the same time. However, don't do that because unless you're really curious because it gets expensive. And the last little bits on hardware mods, go ahead is I mentioned earlier that as it warms up you're going to get some signal drift. I got some frequencies for you here in the area that you can try to establish what your frequency drift is at. So one of the ways you can manage that is by cooling your RTLs. One of the easiest ways to cool it and also to reduce some noise is to put it into a paint can full of oil. If you use vegetable oil make sure your pets don't get into it, otherwise you have two problems. But it helps. These are all the goofy little things that you can do in order to get a little bit extra mileage out of your equipment. Last but not least, I refer to TSCM on the cheap when you're coming to the village to compete. You need to know what the RF spectrum is looking like in order to be able to find the signals of interest. So you got that slide there and essentially just know your radio network neighborhood and you're good to go. Last but not least, it's the village and for the village, some of the workshops and presentations is going to be going on to the village over the next two days starting tomorrow 10 o'clock is shown here. So if any of these things like hacking WPA enterprise, Zigbee, doing wireless penetration testing, new radio, lots of DSR, DSP for SDR, hack 5 is going to be there talking about their pineapple, got a unicorn in the world of Bluetooth going to come up and talk to us as well. But regarding the challenges, we got all the Wi-Fi's, we got all the SDRs, we got mobile SDR challenges and Wi-Fi challenges as well, typical fox and hound sort of stuff but we also have what I call the software defined radio duck hunt. So come out and check out what that is and then we also have a new software defined radio challenge involving an electric shock collar for a dog. So if you're into pain, that's also a thing. So I told you guys I was a Morse code geek, this is a Morse code symbol for question mark. We've got about two minutes that we can take questions. In the meantime here's the schedule for all the talks. It's going to be at the wireless village. It's also info booth is going to be streaming it and we're also going to be tweeting the talks right before they start on our Twitter account. And before you ask the question, yes, we are going to be posting these slides on the wireless village dot ninja website. If you can remember wireless village dot ninja, everything is there. Just go to the base site. These slides will probably be up by sometime tonight. And we'll take questions but we've got like two minutes. Yes. No. No. There are no age restrictions in the village. Yes. The frequency slide for offset or the sig it. All right. Come on up. All right. Thanks everyone. Have fun.


The Appalachian Advantage plan is the simpler, better way to get the phone you actually want instead of paying hundreds of dollars up front.  It's called the Appalachian Advantage and is available at Appalachian Wireless. After months of campaigning, Pike County Judge Executive Ray Jones will continue to serve his community after facing Republican Prentice Atkins in the primary election. As a result, Mountaintop had the opportunity to speak with Jones about his victory. Well, I mean, it's been a tough four month race and I think the people of Pike County clearly and unequivocally stated that they want honest government. They want government with a vision for the future. In the election, Jones was able to acquire 63% of Pike County voters, Jones acquiring 3,468 votes with Prentice Atkins acquiring 2,073. Jones says there are many things left on the drawing board to tackle, such as the groundbreaking of the infrastructure on the Wolff Pit industrial site, work on the hillbilly trail system and the continuation of economic development opportunities. You know, the next four years I'm going to work really hard to let people know the truth to make sure that we do a better job of communicating. And for those of people in rural Pike County like where I grew up that are hurting that think that, you know, maybe in some ways they've been left out, we're going to reach out. We're going to try to make more community investment. You know, the last three years have been pretty tough just trying to straighten out the county's finances after too bad audits, losing the credit rating, no cash reserves. You know, we've got the county in the black now. We're able to do some things. It's still a challenge, but we're going to work for it.  There's a lot of things we can do working together to make Pike County a better place to live, work, and raise a family. That's my goal. To make Pike County a better place to live, John says he hopes to work with both Democrats and Republicans to make that happen. Pike County's better days are ahead of us, and you know, it's going to mean a lot of work. It's going to mean a lot of people coming together, Republican and Democrat.  Well, I don't have a race in the fall. You know, I'm going to reach out. You know, my deputy judge executive is a Republican. Our county treasurer is a Republican. We're trying to bring the best people in regardless of part so that we can give Pike County a fighting chance in the 21st century. For Mountain Top News, I'm Joel Korjold.


Welcome back to Tennis Talk, my name's Cam Williams and we have an event this week at WTA 250 event The Transylvania Open Look at some big names playing in this event with the last week of the season upon us and a lot of players playing for the final spots For the WTA finals. Let's go check out the withdrawal list though because some big names were pulled out of this one as well So starting with the withdrawal list now. We've got Alexander Ober. She's pulled out after making the Kremlin Cup final last week But Dossa, she's also pulled out and will now have to rely on some of the results around her to qualify for the WTA Finals because she's just outside of the race. Gola bitches pulled out, Kinepi, Kudamatova, Mertens and Shariff have also pulled out. Starting at the top of the draw now and the number one seed, Simona Halib. She plays Russ in the first round. Winner of that match takes on either Petkovich or Gracheva in the second round. Then we've got the wild card Christian versus Juvan. Winner of that match takes on either Potipova or the number five seed Tomjanovich in the second round. Then we have the number three seed and US Open champion Raducanu taking on Herkog in the first round. So we'll see if Raducanu can get back on track after a poor performance in Indian Wells. Winner of that match takes on either Bogdan or Jorovic in the second round. Then we have a qualifier versus Barthol. Winner of that match takes on either Perra or the number six seed Kostjak in the second round. To the players we're watching out for, the big names. The Grand Slam champions Halib and Raducanu You've got to watch out for both of them. Interested to see how Halib does. It's the final week of the season for her. So playing in front of our home crowd Let's see how she can do in this event. And Raducanu, can she rebound after a poor performance in Indian Wells? Going to the bottom half of the draw now and we've got Bagu. The number seven seed taking on the wild card Barra. Winner of that match takes on either Osorio or Pedersen in the second round. Then we've got another qualifier in this part of the draw taking on the wild card Presikario. Winner of that's gonna take on either another qualifier or the number four seed Taikman in the second round. Then we've got the number eight seed Kalanina versus a qualifier. Winner of that match takes on either another qualifier. A lot of qualifiers in this part of the draw or Fridsem in the second round. Then we've got Kovnerich versus Vanuat Bank. Winner of that match takes on either another qualifier or the number two seed Contivate who's playing for a lot this week after a really good week at the Kremlin Cup last week. The players I'm watching out for in this one. Got to watch out for Taikman. She's had a pretty good season, especially the second half of the year. So keep an eye on her to finish strong in 2021 and Contivate. Got to watch out for the number two seed. She is actually playing for a WTA final but She's in the Kremlin Cup final at the moment. So we'll see if she can win that and she can win that and do well this week. She could definitely make the WTA finals. So she's playing for a lot this week. The Transylvania are open. So there you have it. The final week of the season and a big event to finish the season off. We've got a couple of Grand Slam champions in action with Rado Kanu and of course Hellup as well and a couple of players that have got chances of making the WTA finals. Contivate a lot on the line for her. Let me know down in the comments below. Who do you think is gonna win this one? Because final week of the season, there's a lot of players that probably gonna be more inspired by the end of the season and try And get that last win finished on a high. Let me know down in the comments below. Who do you think's gonna win? Having a look at the draw, I'm gonna go with Contivate. I think she needs to win this event and she's got a lot on the line. So I feel like she's gonna be a bit more inspired than maybe some of the other players that are wrapping up their seasons. So I'm gonna go with Contivate to win this event and make the WTA finals and sneak in there at the last moment. Again, let me know down in the comments below. Who do you think's gonna win? It's the final week of the season. We're going to the Transylvania Open. It's a big name's playing.