Okay, okay, I think we can start or you want the one minute sure Okay, so welcome everyone. Let me introduce Vasil Kai Gerudo will be giving you talk about as even development for servers infrastructure So for is yours? Hello guys welcome everyone. Thank you for coming to to my talk before We actually start I will Speak about myself and while I am doing it if you have your laptop connected to the Wi-Fi you can clone the repository You see the URL on the screen to be able to follow The talk on your own laptop It's not it's optional. It's not mandatory. I will be showing I will try at least to show you some Some code on my own laptop But you might find it useful To be able to follow yourself So I'm started with the Unix world in 2003 it was a free BSD CD my friend handed me over it saying that it's really something different and difference Different from what I got used to It really was was because before that I was using only Windows Killed my PC a couple of times while trying to install free BSD format at everything I started to work in IT area in 2005 and In 2012 I joined Red Hat as a junior technical support engineer and From late 2015 I'm working again at Red Hat as a senior CIS admin Responsible for central CI Infrastructures I have never worked as a quality assurance engineer and no close to nothing about Testing software. Hopefully it will not be a problem because we will be speaking about testing infrastructures anyway We are going to speak about test driven development in general like what it is and What TDD stands for And then I will show you the server spec tool Which I personally use in my day-to-day work to make sure that my servers are set up correctly I will quickly quickly go through getting started steps and I will speak about different components of server spec and then will Demonstrate you the end result of what So what's TDD This abbreviation stands for test driven development and Wikipedia gives us a very nice definition of test driven development It's basically a process when you Get the requirement first translate them to the test case Create tests based on these test cases and then only then after that after you have your tests ready you Do the implementation the actual development work? so This first then the actual code for example, we can have a requirement that the user password length should be eight Characters or more but not more than five hundred twelve characters and among other things a test case might look like Check that the password variable is set and check that the password variable length is more than more or equal to nine or less than or equal to five hundred twelve and then we implement some codes to ensure this and To work on it for if for infrastructures though the definition will be slightly different it's Again, it will be a process where you get together a requirements, but instead of Doing some software changes you change your infrastructure to be compliant to to the test cases and I'm going to show you how to do it now We might have a requirement for a server to have a user nobody with a spin no login set as a login shell for this user and A test case will look like we check that user nobody exists and we check that this user has spin no login set as a login shell Implementation is easy. It's only one shell command change shell for user nobody Testing software is easy in my opinion, and I'm not saying that it's easy to do it What I'm trying to say is that there are all kind of Tooling around software testing. You can have parallel unit J units whatever unit We have p-test for Python testing. We have our spec for Ruby code testing We have all kind of integrated test suits Very cool stuff For infrastructures Until like recently I will say they're running those grep commands to see if a user actually exists and what login shell he has Or you might want to try to switch to this user and see if you're successful or you're getting an error or you can get What is called useful useless use of cat and grep award and run this ridiculously long when liner to ensure that everything is set up correctly or You might do it in the right way and you might use this Set of commands pipe together and eco pass or eco fail depending on the result if you want to script it Downside of this is that it's quite complex in my opinion to Understand and support like not sure how many people in this in this room knows about know about get and comment Quite some people okay So yeah, anyway, this is not How a proper testing should be done, it's not kind of unified way because Some platforms for example like this get and comment and I would love to see some kind of obstruction layer On top of the shell commands. This is what Ansible does by the way. It's just Rapper around usual shell commands you're using There is this abstraction layer and it's called server spec.  I hope got his name, right? It's basically our spec tests for servers and What server spec does it translates the R spec tests that you write to a shell commands And it uses as a sage winner M docker API Interfaces like that to actually check the actual state of of your machines The official site which contains all the documentation server spec the torque and As you can see on the slide on the screen it our Test case with the user nobody looks really simple like it's if you read it out loud It's almost plain English. So we describe the user nobody which should exist and which should have login shell It's been no login. It's pretty awesome To get started you need Robbie, of course you might want to have Robbie version 2.3 because this is what I used to Prepare for this presentation to run the demo It might work on all the Robbie versions as well, but I'm not sure about it After Rob installation, by the way, I would recommend you to use some virtual environments for for installing right like rbm or rvm because it takes care about all the dependencies and It basically installs you very You get a very consistent ruby installation and you can maintain different versions of Robbie for for your own profit So after you have ruby installed you have to install the server spec gem create a working directory for For where you will hold your tests and run this nifty command server spec in it which will ask you some questions and Will generate you some boilerplate The main parts of server spec test suite are the rakefile and The spec helper I will speak about those parts later a little bit what I want to speak now what I want to describe now is the Disadvantages of the default boilerplate Server spec was initially designed to test only one single machine the Guy who wrote it initially he didn't keep in mind that we might have a cluster of machines that are set up In exactly the same way and that some code sharing should should be applied with the default setup you basically create one subdirectory in the spec directory and it's One-side directory per machine and if you have like ten Ten servers that are set up in exactly the same way you will have ten sub directories and ten Tests test files that contain exactly the same code this is not quite the good approach because there is this dry or Don't repeat yourself principle that cannot be followed in this situation Good thing is that since its aspect it's ruby you can modify your rakefile and and kind of create some rules Describe your infrastructure using ruby code I want to show you how it looks like so just give me a second right, so this is pretty long and But it doesn't do Anything special so what it does is it goes through all the sub directories all the Files and directories in the spec directory it sees if what it processes right now is a directory or not and if it encounters a directory it Adds it upends it to the roles list so each sub directory in a spec directory will represent a role name like database web server Capsule satellite whatnot After we have our roles List generated we iterate through each the each of the roles directory and find the files that Have a special naming convention so the name of the files should conform to fully qualified domain name underscore spec dot RB and Based on that we tell server spec Where it should go What machine it should log into? to run our tests and Then based on the host list we generate the set of break tasks Which are basically represent? the testing actions themselves, so it's really easy and if you know any any Programming language you will be able to understand this rake file in no time So this is how I use it and I was working on implementing like this Assumes that you have a file system layout that conforms to your infrastructure but since it's Ruby you can use YAML file for example to Create a list of roles and then the list of roles will contain a list of servers attached to it or you can even talk to satellite for example and Based on the information that you fetch from satellite you can Apply some roles to the server so your Rake file will be a little bit more complex in this case and some advanced programming skills are needed But the possibility is there which is pretty awesome in my opinion I'm going to commit the YAML file support to The same git repository that you saw the start of the presentation the Second part of the like we spoke about the rake file and what it allows you to do the second part of the server spec is spec helper where you specify the Metadata username to log into the machine password or SSH key You modify SSH settings there stuff like that It also The support for shared tests shared testing is also Implemented in the spec helper and I'm going to show you what exactly it does. It's really simple so these two lines they're basically do some again file processing and They fetch all the files in the shared directory and Just run a require on it, which is basically import in Python or include in C Something like that. This is how you can reuse the shared code on on your machines. I Will not speak about Formatters too much The only thing that I will say that there are three built-in formatters in Server spec documentation HTML and JSON Documentation is what you see in the console output that I will show you in a couple of minutes HTML just generates an HTML file with the results I will also also show it to you how it looks like and json generates a json formatted file Which you then can import to some database or you can feed it to some script that will process the json and Generate some statistics for you Let's get to the practical part of this presentation. So how how you can implement How you can employ a server spec to During the ansible role development The steps are pretty easy. You get the requirements for the role. You translate the requirements to the server spec tests You run the test on a clean machine to make sure that they are failing then you implement your ansible tasks and You run the test again to see if You got it right in the ansible Let me Actually show you what I mean. Can you hear me? It's fine Yeah, so because I was told that the microphone is not good here People might have troubles here in me so we will be creating an ansible role that does Apache installation on a machine very easy like it will Install the htpd package It will make sure that htpd is running and it will create a very simple index HTML file so those are our requirements and Those requirements are translated in this really simple set of tests So we create a packages list and three of them for each package we ensure that the package is installed then we ensure that the htpd is running and then we test that index HTML file has certain permissions and owned by user nobody and group nobody and We match its content to some string Right, so I have this Vagrant box Vagrant virtual machine prepared. It already has the Packages installed Because it's the it would take some time otherwise, which we don't have And I'm going to run this test again this machine To see the list of all the Can you actually see it? The very last line on the console Okay, so to See what machines are you going to test when you run a rake? spec command you can run rake dash capital T and You see that we have only one Only one test here which Test this demo machine, so we are going to run it and see what happens So as we can see we have ten Tasks or examples. This is the R spec This is how our spec calls the test tasks So we have ten examples and seven failures As I said that we have all the packages installed three of them and all other tasks were failed and right here we see what exactly is wrong with with our machine service is not running and Something is wrong with index.html And of course there is nothing listening on the port 80 because htpd is not running So we go ahead and develop a role. I already have it The developer will just show you what it does. So we have this sensible role that installs stuff makes sure that index.html has correct permissions owner and group and It makes sure that htpd is running So let's run the ansible Playbook and see if That tests will be green this time. So we have the index.html generated and htpd is running And now we are running our tests and bam. It's green I mentioned that Server spec generates html files with the reports Here is how it looks like. Excuse me. Unfortunately, I cannot Quite make it bigger, but believe me. It just describes the All the tests that you have and their results Shortly, I will show you how it looks like with the with the failed test So this is the initial development of an ansible role and you can see That it doesn't quite look good because the syntax highlighting is a little bit off in Vim And it's because I'm using old kind of old YAML notation for it So I want to refactor it and I want to Look at a little bit more YAML friendly, let's say and what I also want to do is I want to ensure that service not only started but it also Enabled so after I reboot the virtual machine the htpd is still running. I Have this htpd refactored role here which already looks a little bit more readable in my opinion and It has this Enabled keyword set as well What we are missing is that we are missing the test implementation for htpd to be enabled and To audit we just Edit the test file that I showed you before and Just add another test here that htpd service should be Enabled Let's run the test and See what results we will get so as expected because we didn't have Ansible task to actually enable htpd Before that one test fails the one that we have just added and we see what exactly fails that htpd service should be enabled and it's not and In the report It looks like this so you can see this huge red Box here which shows you what what test has failed precisely now After we run our modified Roll let me just edit the the playbook so it does its job and After that hopefully the tests will pass. So yes, we have only one changed item after the Ansible run Which is exactly the enabled state of htpd service. So let's just make sure that We did everything correctly Yes, so every time you want to change something in your Existing Ansible role or you want to migrate part of Your automation tasks from puppet to Ansible or vice versa or you want to migrate from Ansible to chef or salt stock or anything you can Write the test first Describe your environment in the most suitable way for you Then do the migration and run the tests after you migrated your automation code to another another automation suit or You just refactored it this might save you sometime during the support process or Troubleshooting process That's it hopefully This stock was useful for you. Do you have any questions anyone? Please so yeah the Server spec do have this capability and it's just the question was If server spec shows you the actual state when a test is fail So for example, there was a failed test that showed that File doesn't exist the B file test has failed and it was not clear from the output What is the actual state if it doesn't exist or it's a directory or stuff like that? And the question was if server spec can show you this Yes, it can and for some measures it actually shows you what is what's actually wrong In this case the file was not existent and that's why you saw nothing the actual state was like no state basically, but if The index HTML will be a director instead then you will see that expected VAR www.html index HTML to be a file but got director instead. So yeah Sometimes it doesn't show it but most of the time when the actual state When the object that you are trying to test is there, but it has some State that you don't expect you will see what it is There was someone to my right with a question Yes, so the question is have I been looking to other solutions instead of server spec? The answer is I didn't know that other solutions do exist. Yes So the question was there are actually couple of questions I heard in in this monologue the first question was are there any real real world examples for server spec Yes, they are for example, I use it currently in redhead we have a huge satellite deployment with seven or eight capsules and All the capsules should be set up In the same way, so I have a test suit that test those capsules are the same and it actually Was quite helpful because those capsules were set up by different people and initially More than half of them were set up completely differently and those tests Yes, that's true. Sometimes you just need to set up stuff and then write the ansible automation for it And then there was another question or actually concern that When you use puppet or something that runs an agent on a machine It will ensure the state of this machine anyway Is it right? Yeah Yes, yes, and it's completely fine because If you I have this task for example right now currently to migrate Some subset of puppet manifests from the puppet to ansible because it only they are only one-time tasks that belong to provisioning process not to configuration management process and I wrote tests that ensure That I don't forget to migrate all the manifest I have to migrate and I don't lose anything in the middle you know and more on this you There might be three people involved in the process one guy wrote ansible playbooks. The other guy has this task to Switch part of part of ansible roles to puppet and there is a third guy the actual user of a system those tests kind of Ensure that during the During this migration you don't forget to Control something because this is what happens during Refactoring actually when I was preparing to this presentation and when I was creating when I was refactoring this HTPD role from badly formatted to the good formatted I lost the Part that ensure ownership of a file and The test started to fail and I saw it immediately and so ah, yeah This line was deleted while I was copying and pasting text around so It was useful in for this present for sake of this presentation The main idea is not to lose stuff on your way from one Thing to another thing. Yes So the question is how do I actually ensure that I have all the tests in place? Well, that's where test driven development process kicks in you just have to adhere to the process Yeah, in this case you again It's the same you get the requirements and you ensure that you gathered all the requirements first Then you write your tests based on those requirements And then you implement the other thing that you want to migrate to right so it's There is there is a possibility to Forget to write a test for something But this just means that you don't follow the test driven development process. That's it So the question is why would I use puppet and ansible at the same time because ansible is the is meant to be a provisioning tool and puppet meant to be a configuration management tool and in my like See sudden picture of world. It's completely two different things and different tooling exists to Do these things right? Yeah, I agree. It's arguable, but It's just my personal preference. Let's say So yeah, the comment from the audience was that why Would we use to Two different tools to do to control one machine basically and the suggestion was to have some Jenkins job that will run Ansible periodically And it will ensure the state of the machine instead of running ansible to provision it and then set up puppet on top of this machine and Let it run each half an hour each 15 minutes My comment on this would be that both approaches have Their right to be implemented and again it's just a matter of Adopted practices in each separate sysadmin team We are doing it like this We have ansible playbooks that we are running when we are setting something up initially and then we have puppet Which runs periodically on the machine and ensures that the stuff is set up In a way we expect it to be Sorry, sorry, sorry, there was a question from there and he was earlier than you excuse me. I'm not quite good the question Like okay, so the question is There are two Yeah, there are two approaches in writing tests Test driven like what I have shown you and behavior driven I cannot answer this because I don't know what is behavior driven tests And as I said at the start of the presentation no close to nothing about software testing So I might you know miss the Some concepts some basic concepts Yeah, so the question was In the situation when we use ansible to provision a machine and then Run a puppet periodically on it. How do we actually ensure that? Puppet is actually doing kids job and that it's actually not dead that it's running that it's there Yeah, so The concern is that with ansible you get immediate results that something is wrong. You can see changed or failed Tasks and with puppet. It's not quite Clear because it's a demon that is running on a machine and you don't quite see it, right? So my answer to this is there is monitoring for the for it which ensures that you have a puppet process in place and that We kind of work this around by having Manifest in puppet we change a special file every time and we have a monitoring check for Which checks this file and if it's m time is Larger than half an hour we see an alert this means that the puppet is not doing his job anymore So the question basically is if you can If there is an easy way to match Existing Ansible roles and existing Ansible inventory We use the roles in server spec The answer is there is no easy way for it. You have to know Ruby and kind of code this up I didn't see actually. This is a good question. I was trying to look for some something that is ready but I Had impression that either people don't know about server spec too much. This is why I speak about it right now in the first place Or people just cannot find a use case for it Which is obviously not true taking that there are at least some people here in this in this audience But yeah, there is no easy way or ready to use tools Okay, anything anything else? Any other questions comments? jokes Beers I will have today Okay, thank you very much guys. Thank you for coming Bye


everyone and welcome. This is Melissa Armol of the Stocks. We're going to be reviewing the market here. So expect some movement in the market tonight. In fact, let me just put this up here right now. President Trump is going to be talking around six o'clock Eastern time and that's when the, well, it'll probably be late. They never start on time. So anyways, tonight, there will be some action here in this market. Again, going into Friday end of the week, even if we're up tonight and up tomorrow morning, I don't think we can go anywhere. We haven't really been going anywhere in my opinion. Of course, many people are saying that the market is back bullish, but it is not. So I'm looking at this, as I said in the trading room yesterday, excuse me, and again this morning, as like a move down as if it's going to like scoop or turn, like a scoop and turn here is what I'm looking for, which could take again one, two, three, one, two, three, four into next week. So I'm looking for a scoop and turn. Again, the only reason the market's held up as well as it has in the last few days is Amazon has been extremely bullish. Netflix has been extremely bullish. So those two stocks really have helped support this market and the QQQs therefore are still in an uptrend, but the spy is not. The banks are selling off and as I've said all along, you need to watch the banks and see what the banks are doing because you're not going to have a recovery in this market without the financials and the banks look worse today than they did yesterday. Look at this. This really continued. Wow. What a nice move. This went 12 points almost through that strike of that one put. Geez, the wheeze. The Bank of America has had a nice move and I'll have to be watching here and see where this Goldman goes. This is the only one that really wasn't selling off. Wells Fargo had a nice sell off today. So we've been watching these really in the room in the morning as well and some nice short moves in here.  But again, here's one of the leaning banks. There's just no way. The market's going to recover from here right now. So I think it's going to be very, very, very, very choppy. You have people in here long, you have people in here short, you have people selling, you have people buying, you have people doing all kinds of things. And I think it's going to be a choppy, choppy summer. But I am looking for a gap down that's of some significance coming up soon. I thought it was going to happen two weeks ago. We did have this gap down here April 1st. We did have this. We didn't have enough follow through here. We had some of the day and then we lifted. But I really, I'm anticipating a gap down at some point here within the next week for sure. So we'll see really if my prediction that we're going to have a gap down in the market, that's significant. And we got down yesterday and we got up a little bit today, but went nowhere. But I'm looking for a significant, significant gap down in the market. What do I mean a gap down in the market that just sells off with a nice red bar? So that's pretty much what I'm going to be looking for. So good luck, everyone. Hope you're having a great week. Hope you're staying safe. Email me at Melissa, the stockswush.com if you have any questions.


OK, it's recording. So sorry, we skipped the first 15 minutes because that was the perfect timing for I turn and myself to recap on this topic and see what was the original problem, what could we solve last week, and where we stand if we can go further on that. And the question from Todd was actually related to that. Can we go a bit further on that without asking the users to provide information or to provide a better image? So my answer, quick answer, is not at the moment because for one reason, we don't know in the pipeline what is the job that is going to be the one for building the project. So we are missing one of the pieces of the big puzzle, the bigger puzzle, to go one step further. We need to identify one job, one specific job that could be reused, and we don't have that information. That we're required to modify the CI configuration and all that kind of things. That's why we are not there yet. The solution that we found last week, just for the record, it's backward compatible with what we have today. And it doesn't require us to update GitLab itself or the runner. So we don't rely on any other team. I think I've got that down to the answer now. Way to identify it. And so we also talked about maintenance and actually this new version using the user image would not require some maintenance on our side. Apart from providing packages for our tools, but that's all we don't need to provide packages for all the architectures or whatever. Even if we have to do that, that could be automated very quickly. But we don't have to create one image for Java 11, and that, and that, and that, and Java 12, with that, and that, and that makes it for creating a huge matrix where we get lost very, very quick. And so at that point, I guess we need to figure out what would be the next steps. That's what I added in the doc, not in the doc, in the issue. And so I asked Fabien Cato, who is one of our staff engineers in the team, to take a look. He was pleased with the solution. I would be pleased to have someone else with a technical background taking a look just to make sure that I didn't miss anything. I don't see any blind spots in this proposal, but we never know. Before rushing into saying to customers, we have a solution. It's going to work. That would be the worst scenario ever. And we'd probably, the next step for me would be probably to have a POC adding a kind of small photo time to demonstrate that it's working out of the box. It canceled one of the reward programs that we had out there. So we need to identify also one of the reward programs that we have. And currently in the test projects so far, it was working out of the box because there were just two simple solutions. Find something that would be a bit more complex than that. And what the new proposal is, is that going to be, I assume that's going to be a type of MVC. And from there, is there, do we have any concept of growth or what something to delight the customer with this would be? It's a kind of MVC by itself. The missing part that we don't have today is the ability to install all packages into the provided image. So for that, my recommendation was to use some system packages instead of something based on Curl, for example, that you would download, especially because most of the Docker images out there, they don't have Curl installed by default. So that would create one extra step for the users. Having some system packages would work. But most of the images outside are based on Debian or Alpine. So the MVC for me would be we support all images based on Debian first and second iteration. We also have the packages. If you use Alpine, we have the packages for that. So we can split that in two iterations because we try to have really the smaller change possible in each iteration. So that would be that. If we have that, we can have something working real quick. We can have a POC as well. And we can ask users, especially your customers, could you try this solution with your specific environments? One problem that we will need to solve as well is license management because it's something very specific. We rely on a specific tool where it's license finder and they try to solve that problem by having a gigantic Docker image where you have Python, Go, Java and stuff. It's more than three gigs and it's not even working. The customer that we are talking about at the beginning of this meeting is complaining that license management is failing after a long time of processing. It's failing for this project. So we decided to use something else which is not really far from what we envisioned and now it's working. So we can, we will have to update heavily, I guess, license management to support this kind of scenario. And the final image would be a lot more lighter than that in today. I guess, thanks for joining. Yeah, sorry. I had a surprise delivery when they tell you there's a window between five hours where something will show up. Yes, we have that as well here. It's not a window, it's a, here in French we would say it's a fork. You have a fork of hours and when they start delivering it's not a fork anymore, it's a rake. No worries. So we are at the point where we use the first 15 minutes we start with to sum up where we are to give some background and some insights about where we are coming from because we started this discussion a year ago already. And we covered the point where can we make that a bit more automatic so that the users want to matter about providing their own image and I don't see how we could do that without being able to point exactly this is the good job and this is the one that the kind of image that you need to reuse to run the analyzers. And I was talking about license management which is very different from the others because they try to solve this kind of problem by having this gigantic image where they put every language in every framework with the foots in there and it's not even working. If you don't have the right version of Python in the image, you're good to have something here on the side. I'm just taking notes here. Great and heavy version is embedding all languages and frameworks even working. And so I think we were also telling that the next step would be probably to have a POC. Starting to prototype that, you said that we need a real world example. If you have anything in mind, I remember that this meeting is recorded. So no mention of customers. Yeah, I think that's what we do have. We do have one that we discussed last time. That's an option. And so that would be a Python example. Python is fun and it's kind of an interesting approach where you take something like a scripted language then you need to compile some native extensions because they don't really provide out of the box packages for some of those popular libraries. So I think that's probably the best in terms of a slightly isolated but complex example. I think the other thing that we talked about before and I think this came up during our conversations today was whether or not we have any data on, we don't have any telemetry or usage pings for the types of analyzers that we're using that are popular in GLab.com. So that can gentrally be worth pursuing. I can note that sometime. So one of the difficulties I guess to start prototyping is to add this injection system. But my suggestion was to use packages, system packages like DBLI and DGAN or L-Python packages. If you have any better idea, I would be glad to hear that. But we were talking about MVC as well and that could also make the first MVC a bit lighter. For example, we would say we only support DBLI based images and next month we're going to support L-Python as well that could give us some more time to package and product package a bit better. I knew a few tools that we could use to cross-compile and to create or even RPMs for packages for relapse-based mis-throws. Do we, what's the advantage of using a Deviant package versus just curling down? Good question. That's a good question. Very simple. Almost all of the images that you will find on Docker app they don't have curly installed by default, nor the AFW get. So that would be an extra step for the users if they want to grab more tools. That's the first point. Second point, if you have a different architecture, you need to date your curve so that you don't know the right package tool. And the third one is it's a lot easier to detect the kind of distro that the user is using. For example, if we know that it's a Deviant flower distro, then we know we can use a DPKG directly, dash I for install and then you are out of the package and DPKG would handle very simple dependencies like we can tell the Python analyzer requires Python. You can say that in Deviant and Python is a meta package. It's not something that you install per se, but if you have Python 2.7 installed, it's going to fulfill the Python requirement. As well as if you have Python 3, so at least you have one Python installed, it's fine. If not, it's going to complain that you have unmet dependencies and it's going to fail, but that's a good failure with an explicit message where you understand that you need to install Python if you want to use the Python analyzer. Okay, that makes sense. Okay, so a Debian package for Python, for our Python analyzer, that sounds like a great MVP target. Yeah, and that's not really hard to, there is, I think it's FPM. What's the name of this generator, FPM, yes. If you provide the project variable to generate all kind of packages. So the point of having this system packages is if you know that it's a Debian-based distro, for example, you know for sure that all the tools to install depth files are going to be there. Otherwise you have to guess and we will run into problems for sure. Another one is, if I remember well, go X. So there are a few tools out there that would be useful for that. No, it's go X, I guess. I'm not sure if it's just a cross-compiler or a package or as well, but there are many for sure that we can use without having to create all the required folders because believe me if you try to create a package for Debian you have to create a bunch of folders, a general, with a very specific format. It's a bit tedious if you have to maintain that. All right, and we are out of time. Sorry, I didn't see that. Any last comments, any complain you want to? Yeah, that's a good one as well. Yeah, all right. Okay, on my hand. Perfect. Todd, anything on your side? No, I'm good for now. Perfect, thank you very much for joining. We appreciate it and we'll see you next week. Okay, bye-bye.


Hey everybody, welcome back today to Retro Tech. You know I'm out here in the off-loading area and we're going to be talking about big CRTs again. Now look right behind me is the JVC 36 inch consumer grade D-series television and this is one of the most legendary consumer grade TVs that is in a shadow mass CRT and one of those reasons is the enormous size of this thing. Just look at how big this is. However, the CRT I'm going to talk about today is not the JVC D-series, although it's great. We're gonna look at a repair I've been working on. So there's a swing around here. There's our good buddy Brutus getting comfy down here. You'll notice while we've got big CRTs everywhere. Today, we're gonna be following up on our lovely 2530 series CRT. That's the PVM right here that you see a skeleton of. This one has been gutted for most of the valuable parts. There's normally a board right here, a new board on the other side and some on the back. But this should be a good example of what the inside of one of these machines looks like if you want a closer look. Now there's one part on here that is kind of a pain as far as this whole setup goes and it's this. This assembly right here, H-Stats built into this. This is not normally like this on the other 30 series. They don't have this potentiometer that controls H-Stat. What ends up happening is over time you get shorts inside this thing and that just pretty much makes the part useless. It has to be replaced. It's very hard to find replacements of this. So you can have the entire monitor be pretty much useless if this H-Stat goes out and the way it goes out is the picture just starts to shrivel and shrink and then it ultimately just shorts out completely after it's turned on for a minute. Here's this unique yoke down here. Lots of copper in there and then we've got a separate neck connection here on the actual neck of the tube for convergence controls. And one of the only boards that remains is our C neck board and then our audio amp. But this 2530 is obviously not the one we're going to be looking at. That's going to be this one. We're following up to our repair here, the wiggly wire repair where we repaired the wiggly wire down here. This thing has been a beast. I wish I was joking when I said that, but it's been just a colossal undertaking. I've had to rebuild nearly every single board inside this PVM. First, let's start on this side. This is our video board. Please just notice all the lovely points on there where you have a component going through a hole and being soldered onto this board. I will show you some photos. I had to reflow solder on every single point on this board. And that was just because after I'd fixed something, something else would stop working. And it was all because of cold solder joints, especially on this particular board. I even reflowed the solder on this little daughter or junction box board, whatever you want to call it. I think it was labeled as H6 and it's just a spot where cables go in and cables come out. So I had to re-solder that. There's also some daughter boards like this one. I reflowed all the solder on the two daughter boards that are on this bigger board. The one board I really did not have to solder with or mess with or do anything to was the audio amp right here. However, this one did need to have the original input board replaced. I replaced it with another one from a working unit that was in much better condition. And the reason is because of the condition of that input board, it was just torn up. There was a lot of busted capacitors. I'll show you it here. It's also had some bad connection points where it looked like we had lost maybe some inputs for corrosion. And more trouble would have come from that than what it was worth. But one of the boards I did have to rebuild and reflow solder on all the points also was this seaboard. So it was recapped and all the solder was reflowed on it. Right next to that you have the D2 daughter deflection board, which controls a lot of the secondary convergence and dynamic convergence controls on this CRT with those potentiometers right there. And this one was recaptured and rebuilt, so that's another board in there that was recaptured and rebuilt. And we have our main deflection board on this side, which is always got to be rebuilt, at least some portion of it. And I want to show you some of the important stuff on here. It looks a lot like the 2030. And there's a part where we had a trace damaged over time, had to repair right next to that H center potentiometer. So that's how you would adjust the centerness of your picture. And then you can see we've got vertical angle written right there, and that actually leads down to this potentiometer. So those are two controls that you'll have on here that are for geometry. If we go down here some more, there's H size again, right under that is our normal pin cushion. And then we have T pin for top pin, bottom pin, PN, BPN, that's what that is for. And then we've got a pin out right there on that potentiometer. So there is some controls on here for certain geometries. There's vertical size and center right next to each other. And I want to show you, even after you've recapped the boards, what you can expect for image quality here in a second.  I just didn't want to turn it on because it's very loud back here with the hissing. From the flyback transformer, it will definitely show up on the tape. So let me show you down into the back of this CRT, one that is fully populated. You can see just miles of cables inside here. And everything again inside of this monitor was serviced. If you see that metal encased box down there, that is the main power supply. It too was rebuilt. So that had to be retrieved from inside here and then rebuilt also. So that's a total of one, two, three, four, five. And then with the daughter boards, there's three more daughter boards that were all reworked. And then this one was replaced.  And Brutus' life invested in this wonderful monitor. What do you think of it, Brutus? Yeah, it's pretty awesome. So one of the big issues and challenges I've been going through is the temperature. The temperature in my shop. Let's see what it is right now. So that's Fahrenheit on the left and Celsius probably on the right. See right over, what is that, 12 degrees Celsius, just above 50, almost 55 degrees Fahrenheit, which is safe. It's safe to kind of work on this and test it in this temperature. But the last couple of days, it's actually been too cold to fire this thing up. Let's talk a little bit more about how you would adjust this PVM. Again, I've shown you those potentiometer holes in there. You're going to need a very small screwdriver. And unfortunately, you will have to have power running to the screen when you make these adjustments.  That could be the monoscope pattern, for example, from the 240p test suite. Pull it up on your device and then use that monoscope pattern to adjust things like the horizontal size, the horizontal center and vertical size and center and also your aspect ratio. But I do need to warn you, when you look at things like your pin settings and your edge settings on this monitor, do not expect amazing results. I have worked on plenty of these. And for the most part, they do not have good dynamic conversions. They do not have good edge geometry. It really suffers from that in that oversized area. Now you can get this image looking pretty good in the middle of the screen. And you can also, if you're just using it for like 480i content, which this mostly would have been used for back in the day, you can get away with that bad geometry and convergence on the edges because it kind of washes out in the picture. So first things first, it is loaded up with RGB at the moment and Super Nintendo. Now you may notice some snow drifting across the screen. Unfortunately, my power supply just died on me for the OEM power supply. So I had to use a backup power supply, which does not produce great image. It's not something you should really use unless it's an emergency situation, which we're in today. But this should not hinder us too much. I just want to show you the initial issue right here. And that is with the buttons. When I press the controls and I try to turn on the controls, it takes a second for them to respond to my touch. Let me show you what I mean. I'm going to try to switch over to the B line input. And if I just tap it, see, I have to hold it down for a second for it to go. And then it will go. And then the same thing, if I want to switch back to another one, I have to press it and hold it down. And then eventually it'll switch over to that. Now that's not normal how it goes. So there's a VTR, for example. It's got S-video running cleanly with that N64 right there. So that's an example of one issue that I've not been able really to get rid of. It's working fine, but the buttons are taking a second to switch back and forth. You have to press it and kind of hold it. All right, I've got this kind of set up in a good enough spot where you can tell the screen geometry. And at first look, I know you're going to see some issues. First off with the monoscope pattern. Let's pull this up. Now this screen struggles to do a lot of great things on here. And what I mean is it's, there's always some issue with convergence on bigger tubes like this from this time period. Generally, it'll be along the top. And if you go back and look at the back of the monitor, it's just loaded with convergence strips. And also, unfortunately, the nature of this older plastic is it's so brittle, making adjustments to it will only risk further damaging it. And so we can't concern ourselves too much with our edge geometry and our edge convergence around the top. And at the sides, this is about as straight a line as you can get on this. You cannot get it straighter really. It's always just looks a little wonky on the sides. And so if you're going to be looking at your geometry all day, this is not really the best monitor to have for this. Because another reason is it's so difficult to make an adjustment, like I showed you by taking the shell off and then adjusting those potentiometers. But this is what I would consider a good adjusted screen here. We'll look at some other things. You'll notice a little bit of issues here on this, just not the greatest pin controls on this monitor. Here's our linearity. And again, we have convergence issues again at the top mostly. These two corners are better, but not perfect. And this is just the nature of the beast, the larger you go, the more difficult time you're having with your screen. Alright guys, thanks a bunch for watching today. I really appreciate it. Let me know what you think of the Sony PBM 2530. Do you still like it despite its drawbacks? It's still got that great iconic cube design, so it is highly desirable. And there aren't too many Trinitron tubes from this time period that are this large and still something that you'd want to have. So I still find it to be one of those amazing CRTs to me, just as an example of awesome technology from the time period. But personally, I'm going to be glad to be done with this one. It's just got a ton of circuit boards in it, a bunch of things that can go wrong with it. And so unless you're highly skilled or have somebody that can really take a deep dive and look into the monitor for you, I don't normally recommend this as one you should own. Like I said, unless it's been restored and it's in good shape. Thanks again for watching. I will see you guys next time with some more retro content.


Hi everyone, Joe for jashkiescasebrakes.com. This is part two of this Mosaic Choice Football Random Division break. The first, part one is the randomizer, and part two is the break itself. I accidentally hit the stop recording button instead of the pause button during that trade window, but there were no deals done. Trade window is closed here at the box of Mosaic Choice Football. If you're looking for the randomizer, that's in part one, and it's going to be linked below in the description of the video. Alright, so let's pop this open, and let's see which ten we're going to do. If you look on the top camera and this camera right here, there's ten in the back row right here and ten in this row right here. We're going to roll the die. We'll go one, two, three for that side and four, five, six for this side. And three, one, two, three. So the back row over there, so this one, two, three, four, five, six, seven, eight, nine, ten. We'll save these for some other time. Let's roll with this. After this break, we'll be top sterling. We'll add that to the schedule here. So that's the schedule. If you want to click the schedule in the chat, then let's get this going here. Good luck everybody. We'll show these first. There's James and Williams to 80. You got to know when to hold on, know when to fold on, know when to walk where you know when to run. And so the NFC North, Scott, although he did not get the worst of the punishment, I think. Some of these are number two. There's Matt Ryan to 80, Colt's Edition. I think it's going to do studio work now, right? AFC South, Chris with that one. The Adam Thielen also for the NFC North. And behind Tyrone Davis Price, your auto is Pierre Strong, Jr., AFC East, J. The Patriots, AFC East. Next box. Ooh, there's a redemption. Back there. There's Dulcich to 80, Jonathan Taylor to 80, Marquez Valdes, Scantling to 80. Marquez Valdes, Scantling will go to Kansas City. That's going to go to AFC West. That's for the X-Line, Jonathan Taylor to 80, AFC South, Chris. And then Greg Dulcich will go to the AFC West for the X-Line. Behind Johan Dotson back there is the redemption and that's Rookie Autographs Mosaic Choice Fusion, red and yellow, red and yellow, red and yellow. It's going to be, it's going to be K-E-N-N-Y, Kenneth Walker III, I thought it was going to be a different Ken. This is a Seahawk though, this is going to go to, right Kenneth Walker, my head's not in football mode right now. Yeah, he's for the Seattle Seahawks, that's going to be for the NFC West, Tristan. I'll mention NFC West right there as well. All right, another box. Matt Olson with a bomb. You got Shaquille Barrett to 80, Justin Fields to eight, and to 80, Kanate Ingram, 456 homer, 56 foot homer. Ingram goes to the NFC West, that's for Tristan. The Shaquille Barrett will go to the NFC South, that'll be for Zach. And the out of eight, Justin Fields. Nice low number there, that goes to the NFC North, so you can see this is the black-yellow parallel. All right, behind Dak Prescott is James Cook, Rookie Otto, it's going to go to the AFC East, that's for Jay. Dak Prescott will go to the NFC East, the X-Line. Swing Athletics, really miss Olson. The A's have kept the guys that they traded the last handful of years, it'll be a great team. David and Yoku to 80, Harold Landry to 80, Jerry Rice to 80, and a Brock Purdy rookie card, nice. NFC West, that goes to Tristan, nice rookie Brock Purdy, Hassan Haskins back there as well. Jerry Rice is going to go to Tristan, Harold Landry will go to Chris, AFC South, AFC North, Chris with the David and Yoku. And behind Tannill, it is Ricky Williams, nice Ricky Williams autograph.  Yeah, what are you going to do when they go to Vegas? Are you a free agent or are you going to keep supporting them? The tough thing is, I think the fans get a lot of the blame, but I think the real blame lies with the ownership because it doesn't really invest anything in the team. There's Trey Hendrickson to 80, Jamar Chase and some Peacock, Trevor Lawrence Peacock, nice. There's Jamar Chase to 80 and some Trevor Lawrence, nice one for the AFC South, Chris in the Jaguars. Jamar Chase will go to Chris in the AFC North, he's got the AFC North and South, gets the Trey Hendrickson as well, you've got Christian Watson and Jordan Davis. Your autograph behind Jalen Naylor is Dawson Knox, his autograph going to Jay in the AFC East.  Yeah, full front office and ownership, I mean, it's a mess out there. Fans get the blame, but it's just like, you know, you want to keep asking fans to support a bad product on the field at a stadium that's not super great. It's Kyle Hamilton to 80, for Chris, Eddie George to 80, for Chris, Devin Lloyd to 80, also for Chris on the AFC South. And we've got a nice Chris Olave right here as well, that's going to be for the NFC South, Zachary. There are some recent I'm a Raiders fan, just a holdover from the LA days, but we're here in Los Angeles and Mark Davis was saying that the A's, the A's really jammed up their ability to build a stadium out there. Here's Charles Haley in Oakland, which forced the Raiders move. Here's Tristan in the NFC West. There you go, Mookie. Ties it up with a solo shot. It looks like we got points, 900 points, a decent amount of points, so we'll randomize that to one person in this break, Jelani Woods, Tyreek Hill, Drew Brees for the NFC South, to 80, that's for Zach. You got Taysum Hill as well, NFC East, Brian Robinson, Jr. to 80, that's going to be for the X-Line. All right, a few more boxes to go, that looks like, yeah, that looks like a redemption there. We got Evan Neal to 80, NFC East, X-Line, Tannehill to 80, Chris in the AFC South, DeSean Watson to 80, AFC North. And then behind Dalvin Cook, the redemption is going to be a rookie autograph, well, it's A Choice Fusion, red and yellow. We got G-E-O, George, George Pickens, George Pickens. Got plenty of time to redeem it, got until 2024, got a little over a year, and that's going to go to Chris M. and the AFC North, got the North and South, gets the George Pickens and free toddler. All right, two more boxes to go, ooh, nice Kenny Pickett there, so there's a Kenny Pickett black and yellow, four out of eight, AFC North, Chris, nice, Pickett to Pickens for years to come, we hope, Michael Pittman, Jr. to 80, Chris in the AFC South, Desmond Ritter to 80, NFC South, that's for Zachary. And Matt Corral is your autograph, that's going to go to the NFC South, that's for Zachary. All right, final box, good luck. Got Quay Walker, NFC North to 80, that's for Scott, Joe Burrow to 80, will go to Chris in the AFC North, Kenneth Walker, NFC West, Tristan, that's to 80, got a Chris Olave Rookie for the NFC South, that will be for Zachary. And behind Rashad Bateman, behind Rashad Bateman is, is a Jeremy Ruckert autograph for the Jets AFC East, that's for Jay. Hey, overall not a bad break at all, thanks everyone for getting into this one. Visit jaskyscasebreaks.com for more football, let's give away those 900 points, let's go back to the list really quick, gather all the names, name on top, we'll get it after, after four and a six, ten times. Good luck, one, two, three, four, five, six, seven, eight, nine, and tenth and final time. After ten, Chris with the 900 points, there you go Chris, there you go everyone, I'm Joe for jaskyscasebreaks.com, thanks for watching, thanks for breaking with us, and I'll see you next time for the next break, bye bye.