Okay, it works, all right, it's okay. All right, so hi, my name is Soda, and today I'll be talking a bit about Docker and Ruby and Rails development. So before I start, I just want to get a few of, how many of you are doing Ruby and Rails? All right. So I will be going through some of the introduction to Ruby as well, so that you have the context on what I'm talking about. So I actually work in this lab called Experimental Systems Technology Lab. We're actually based in the Ministry of Education. So what I'm trying to do is to help develop some of the tools for the teachers and the students, so to help them improve their educational landscape. So if you're interested and if you're a Singaporean, then do come look for me. We do some cool stuff. So I'm just going to skip past this very quickly. I think more than 50 percent of us know what Docker is. So the thing that I want to call out is that actually, Docker is not really the container runtime. Like OpenVZ and LXD, they actually make use of the kernel features to run containers, and for Docker, they actually use libcontainers. So that's something that people might not be aware of, and which brings us to this point that Docker is actually an opinionated way of running and using application in containers. So what that means is that it's not like a VM. I think some of you guys may be just starting out with Docker.  But that's actually not the right way to do things, and then I'll explain a bit on why you shouldn't do that. But basically, they're very opinionated, and if you don't go with what Docker wants you to go with, you find yourself running to a lot of roadblocks. That's my experience. So you have this idea on one process per container. So it has set up a bit of a controversy in the community. So people, some of them are against the idea, but I think if you really want to scale and you want to use different orchestration tools, you kind of have to bind to this idea. So every container should only have one application running on top of it. So you put your Nginx in one container, and then you put your app, and you put your database. So what it allows you to do is let you scale each of the components of the application independently of the other application. So for instance, if a Rails app, which if you do Rails, you know that they are horrendously slow and they're also good. So what I can do, you can spin up multiple Rails containers from which you can run and no balance them across Nginx. So you don't scale an entire infrastructure across many times. And this is the great thing. So I'm going to just go a bit on why I like Docker.  If you're a Ubuntu user, you use like Appget install Postgres. And the Windows guy just use some GUI nonsense to get Postgres in. So what you can do is you can replace the installation of all your application with just one command, which is basically Docker pull Postgres QL. So you might be thinking, well, I'm a Mac user. I don't give a s**t about Ubuntu users, right? Like they can handle, they can install their Postgres however way they want to. But what happens if you're dealing with some legacy application, which requires you to use an older version of Postgres. Now, if you're on Mac, you have to do this nasty looking thing of homebrew to try and get the correct version of Postgres. If you're on Ubuntu, you have to go and get the app report, and you need to get a Postgres report and install the correct version there. And then for Windows, you do more GUI nonsense to get Postgres 9.4, right? But the cool thing about Docker is that, well, you just need to change the command and pull the right image. And then you have Postgres 9.4 and that's your dependency within your application. And the other way, the other good thing is that it converts why I was down left, which is different ways of running application into a single unified way of running application.  I don't know how to run it, right? But I know that it's probably going to be like this if there's a Docker image for it. So I think that's a really cool thing about Docker. And so, yeah, so basically Docker file is like an Ansible shell script which you use to create a Docker image which represents like a hard disk or your VMDK or your virtual hard disk.  So this is the basic idea of what Docker is about in terms of the tools that you use at the very basic level. So the high level you do stuff like compose and so on, but I'm not going to go into that. I think you mentioned this a bit earlier. So it's important to differentiate in my opinion between the Docker engine, which is the actual runtime for containers as well as from the Docker ecosystem which are all the tools like swarm and compose. Because I mean, if when I first started out, I get a bit confused over like all the resources online. And it's very called Docker is a way to run containers. And recently they have been introducing a lot more tools about swarm and compose on orchestration. And that I think that has caused some tension between the different communities. Like I think the red hat people are not very happy about Docker moving more and more towards orchestration and being containers. So you don't have to be locked in to the entire ecosystem if you just want to use containers. Because I think containers is the way to go. Personally, I'm not very convinced that Docker ecosystem is the way to go. But the reason why I point it out is that I had an argument with my infrared on what Docker is and what it isn't. So just to clarify that, there's actually two different things that we are talking about when we talk about Docker. And right now what I'm going to describe today is the Docker engine part, which is just the runtime. So, okay, a bit on Ruby on Rails. So it's a web framework. It is also an operator web framework. So with it, it comes with a lot of baggages, a lot of existing tools, a lot of very cool stuff that people has built on top of Ruby on Rails. And some of these actually hindered our experience when trying to Dockerize our Ruby on Rails app because there's so much tools involved. So the way that Ruby manages dependencies is through Ruby gems. So basically you have a text file that writes the gem of your dependencies. I want Rails, I want bootstrap.  So this is how they manage the dependencies. And there's also this idea in Rails which is the assets pipeline.  And then what they'll do is that they will squash all the JS files together into one combined file which is MIMI file, ugly file that you use for production. So in the left side of development, you will use the plain text JS file in your dev.  And the typical Ruby on Rails app look like this. You have Nginx, the access web, the loop balancer. The Nginx will also pick up the static assets which is pre-compiled earlier as I described. And then you'll serve those static assets. Then you follow the subsequent request to the Rails server which will do your actual Rails processing. Then in the back end, you have Redis, most likely to manage your sessions. And then you have your database from which you will store your files. So now I will talk a bit about how we use Docker and Rails in development, test and production. So in dev. So let's talk about this hypothetical example, right? So one use case is that, well, if you have John the intern coming in, your smiley face, and then ready to get to work.  Sounds really cool, right? And now you have your senior dev who's a bit more old, a bit more jaded about things, about new technology in general. And you tell him, hey, you know what, this cool Docker thing, what it allows you to do is to achieve this development production parity. So you can code, code, code, you just generate an image, once you're done in your dev containers.  So you achieve the so-called development and production parity, right? So what we have realized is that this is actually a unicorn setup. Both cases does not truly reflect on what you can actually do with Docker. It sounds like a very tempting idea, and I'm going to explain why it doesn't really work out. In my opinion, I mean, if you guys have, I mean, if you guys disagree with what I say, feel free to come and talk to me about this. But the basic problem with this is development tools. So what I mean by that, as developers code, developers come up with different toolings to help them code more effectively. And some of these tooling you cannot, and it doesn't really fit very well within the entire ecosystem, and it's very apparent in the Rails, and Ruby and Rails development setup. So the first way, the way, so there's probably two approach that I can achieve the first thing which I talked about, which is that you want to achieve this thing where you can download and you're going to get John the intern setup with the system. So one thing you can do is you can move all your Ruby or Node.js, all your dependencies for the application into one image.  And then you'll be able to not install Ruby and not install all your dependencies on your machine, yet still able to develop Ruby code. Now the trouble is with this part here, like all your workflow in your Git, there are some toolings which doesn't allow you to so easily translate outside of your environment. So what I mean to say by that is that some tooling requires you to have Ruby dependencies, and now you're stuck because you have to run Docker exact, run some commands within that Ruby container to get the work. So developers have a lot of resistance because they're no longer, they're not familiar with the work, they're not familiar with the commands that they're aware anymore, and now they have to relearn all the stuff that they have done. The other thing is that, what's the other thing with this? Yeah, so for the Mac users, this is a very, very painful setup for them because before there is native Docker for Mac, what you have to do is you have to spin a virtual machine up here, and then you'll run into the mess of, I need to tell my dev, hey, access this IP to preview our site, and that's very, very painful, and it's very, very counter-intuitive to what they have been promised. So the next thing you can do is, okay, fine, so some of the dev tools, since some of the dev tools are outside, why not I just move all my dev tools inside the image and then you just code off the image, like you just spawn, the first thing you do is you spawn a container, and then you just do all your coding inside there. So the problem with that is that now you have forced everybody to use basically the same set of dev tools, which is a problem, right? Like, who uses VIM? Who uses sublime text? And it would be mine. I have colleagues who do that. So now we have to standardize across every single employee within the company and say that, no, all of you learn VIM now. I mean, I would say that, but my developers will not buy it, so that is the problem there. So these two approaches, none of it is very good, and this is why the first case doesn't really work out so well.  And in your production image where you want to have minified assets, you don't want them in your development because they make your developers life bad. So what makes more sense to us is having a staging QA production parity means that you generate a master image from which you run in your product, in your staging setup, for which you can test against that. So your dev, you just do your normal dev. So what we do, right, so this is just to show how much time we have spent trying to automate a very simple thing. And we have to find a balance and for us it's been hitting, we've been trying it so hard and then it doesn't really work out. So what we do now is basically on your dev machine, you'll get the developers to install all the Ruby dependencies, all the dependencies with regards to development will be on the host machine. But things like your database, things like your Redis, things like your external database in external systems, you will use containers to launch them.  So in a test setup, so because we are the ministry, we cannot use Travis and we cannot use CodeShip, we cannot deploy our code on AWS, we cannot deploy our code on DigitalOcean. So we have our own different set of challenges that we face that is probably a bit unique. So we have to build this whole continuous ECI pipeline.  We'll elaborate this a bit later. We will have a security container that runs with the amount of volume of the app inside this security container, which they will test for vulnerabilities and within the gems as well as some of the coding practices. And we will generate a master image from which we will deploy to our staging. So once this master image is built, we will push it into a Docker registry that we host in-house. And our CS server will then trigger a deployment on job success onto the staging server and say, hey, go ahead and pull this new image now. So once the developer pushed any code to master, we would, I think maybe after five minutes, the code change will be refactored live on the staging server from which we will go in the server, we will test it out, we will try. And once you're happy with the state of the application in staging, we will move it into the production. So what it allows us to do is that we know that this master image will behave somewhat consistently in both the staging environment as well as the production environment. So this is the part where we use Docker as a bit of a test runner. So anybody familiar with Selenium? Right, so basically is you will launch a browser and you will do those things. So the nice thing about Dockerizing this whole test setup is that now your test runner is, how should I put it? Your test runner can be anywhere right now. So on our CS server, we will run our test on the CS server. But let's say if anything fails, our developer can run the exact same setup on the dev machine.  But after you containerize all our setup, it doesn't matter what the base machine is anymore because all we need to do is install Docker and then we'll run a test setup there. So I'll give a demo on this thing a bit later after I finish the presentation. So some of the problems that we face in tests is that downloading RubyGems is very long. So the server is in US and then you do this like bundle install thing which takes like three minutes. So your test basically takes three minutes that is just downloading gems, right? And if you use Docker, you realize that yes, there's cache. There's a Docker cache which cache that particular instruction when you do a bundle install. But what it doesn't do is that if you modify the gem file even to remove gems, it will trigger the full download again. So that is really very painful. So how we solve this problem is that we actually created a gems volume inside our setup. So in our CS server, we have a gem volume which will mount the gems inside the app. And then when it install, it will basically install into this common gem volume which we mounted on all the different containers as you run a force of sequence test. So if you have another application, you can also link it up with the same gems container and they actually reuse the gems. So your gems don't download, you don't download gems every single time you do a build even though the project. So you can reuse the gems that you have downloaded. Right, so in production. So whatever I just described earlier, actually it only makes sense for tests and development. In production, you actually want your bundle image to have all the gems downloaded. So if you have to pay the cost when you build this image, you have to pay the cost. Because the whole idea is that your image should be entirely self-contained. And that allows you to bring this image to whatever machine that has Docker and it will run. So if you have this additional dependency here where there's this, where you have this restriction of I have to have a gem volume in my thing, then you kind of miss the whole point of using Docker in the first place. So no shame on gems in production. And the other thing that I find really useful is to create your own base image. So it's very tempting to say that we will just use the base image from one of the base image that is given in Docker Hub and then I'll add more instructions on them. If you have two or three different Ruby application which share the same common base, you should actually have another image from which to install all your dependencies on. So for us, we have like, I think the base Ruby image doesn't have like postgres drivers and some XML stuff that we need for Ruby. So we actually build another image with all these dependencies on top of them and then we'll base our application on top of that image instead. And so this is the last problem that we encountered in production. Basically, your static assets are compiled together in your production image. So if you launch your Rails app, it's very hard for your Nginx to actually pick up the static image in another container because they are in different containers, right? So you need a way to fit these static assets from another container. So in container setup, this is how it actually looks like. So how does Nginx know where to pick these things from? So the solution in this case is also to use volumes. So what you do is that you have an assets volume from which you put all your assets in and then Rails, you run this rig assets command at the time where you deploy to make an update onto the assets volume. So there are some issues with doing it this way. So if you're interested and if you do Ruby, then we can talk about how we can solve these issues. But generally the solution is the same, just use volumes, right? So lastly, I'll talk a bit about the pain points that we have encountered. So the biggest challenge is to actually decouple and, right, so here's how I put it. Your application that you run in the Docker and run on your host OS, they are very similar yet they are actually very, very different. So how you wanna think of application is actually like mini VMs which is only running one single application. Part of the problem is that if you have a real server, it's very tempting to go like, my DB is in local host 5.432 and then when you build an image, you will realize that it doesn't work because the local host actually means the local host within that particular container. So you have to kind of tell yourself that every container that I run is a separate little VM and I have to network them instead of doing what I can do normally. So normally what you could do is you can access the files in the same file system, you can access the ports in the same file system but it doesn't work out once you start to containerize application and you run into a lot of trouble if you don't get this right. You run into very silly things like cannot access database in local host and you have no idea why but it's because the machine is actually on a different place. And the last thing is that I'm not sure how many of you have encountered permissions problem but our security guy don't like us to run root, don't like us to run the containers as root. So we have to do a lot of, we have to create a new user in the image in a container and then you'll run as a different user and then you realize that the files that is mounted onto the container actually have all different permissions so you can't access the files that you could have otherwise. This is a problem which I think Docker hasn't really solved right yet but basically they've been telling everybody to run the containers as root so nobody has this issue but if you face a security guy in your team then this is the kind of problems that you're run into. There is a whole topic about username space and how they work and 10 methods and all this kind of thing. I mean in subsequent meetup I will talk about those but in general this is just a bit nasty. And yeah so I've come to the end so this is actually our experience working on Docker and Ruby on Rails. So again if you're interested if you do Ruby on Rails development and you wanna come and talk to me about the stuff that I've talked about then feel free to come to me after the talk. Thank you. Yes? So regarding the file permissions how did you solve it? Did you create like an entry script or? How did we solve the permission problem? The, it's actually not so bad because once you, what we do is we set all the files to all right, all readable. I know it kind of defeats the whole purpose there but we kind of haven't really found a good way to solve this issue yet. The trouble is that there is way you can mount volumes as 10FS so we can say that this particular volume I wanna mount as a temporary file system but and that all just messes up the volume permissions like the second time you run it you have a different set of permissions. So yes, right now we just do A plus R and then we just call it a day but there's probably a better way to solve this. Yeah I thought about like doing an entry script but the entry script wouldn't, basically if you start the container the entry script would then own the files but if you have, if the same files need to be accessible to different user IDs that will be initiated then. So this is where they haven't really nailed. So wait, I need to show you the demo which I wanna show you the demo so, right. Okay, okay so in a typical real setup you will run like this aspect command and then you'll run, you'll create, you will start to run the test for the application. So you'll launch a nice browser on your end and then you will, something's happened so, wait hold on, right so you will run, you'll start running a test and then you will do these fancy food things.  So what we did is we launched a bunch of, so there's this nice image called the Selenium image. What it allows you to do is it will create a container where you can VPN into and then in that container has all the accept FB dependencies and Chrome dependencies. So this test script basically would create all the different containers, initialize the database for the different stuff and then what you can do is you can do this VNC viewer and then you have this. So this is actually running inside a container. So your Rails app will talk to this container and you will launch a browser within this container. So, right, so it's running a test now. So the thing that we realized is that running the test this way is a bit slower than not but if we run it on our CS server on build it doesn't really matter. This is running on machine, but it's running as containers. So you see the container is spinning up and then you would do the Selenium test there. Okay, cool.


can choose 10,000 different musics that we have. We call them frequencies or quantum frequencies. So just imagine each one of these music, your cells can listen to you. You can tell them to do whatever you want. So let's say you want weight loss. You can have a frequency for weight loss. Let's say you want to have better skin like that lady who doesn't have psoriasis anymore because she used the frequencies for 60 days. And psoriasis were 28 years. 28 years she had psoriasis. It's not something that David is telling you. No, I met this girl. I talked to her. She showed me her legs and how all the scars were starting to heal. All the scars of the psoriasis that she had. So yeah.


The Cavalcade of America, presented by DuPont. An original radio play inspired by the life of Susan B. Anthony. Starring in the role of Susan B. Anthony, the distinguished American actress Cornelia Oda Skinner. The Cavalcade of America is presented by the DuPont Company. Makers are better things for better living through chemistry. And it's dedicated to those men and women in every walk of life who have shaped the destiny of America in the past and to the youth of today who will shape the destiny of America in the future. The other day, a man with curiosity decided to get some real information about a feminine habit. Like most men, he'd often watch women search through their handbags on a bus or a streetcar or a ticket window. He wondered how many items were actually carried by the average woman in her handbag. And so he had a count made. The final figure showed an average of 39 items per handbag. One woman carried 106 different articles and the variety of things found in this search range from the usual lipstick and powder to an extra pair of stockings and even a dog collar. So it's easy to see why women's handbags must have capacity nowadays. But the reason why they're handsome and colorful and yet so inexpensive is another story, one in which chemistry plays a part. One of the earliest developments of our modern chemical age was peroxylene coated fabrics, which DuPont makes out of the trademark fabric oil. About 40 years ago, fabric oil was used as an upholstery material for buggy seats and dashboards. Then DuPont chemists began to improve it, gave it color, various interesting textures and even greater wearability. With the result that today, coated fabrics serve hundreds of uses. One of these is in the form of Tanteen, the first of all washable window shades, noted for its beauty in long life. Another use important to women is handbags. It wasn't so many years ago that women had to pay at least five dollars for a good looking handbag. Today, she can buy several smart handbags made of fabric oil for the same amount and thus can have a different bag to match each costume. And they stay attractive because they're washable. Now this entrance of peroxylene coated fabric into the handbag field has had other important effects. In 15 years, the number of people employed in making handbags of coated fabrics has jumped from less than 2,000 to a total of over 10,000 people. Chemistry 2 supplies frames and fittings of DuPont plastics, rayon for linings, work for more people in plants as still other manufacturers. Another manifestation of the DuPont pledge, better things for better living through chemistry. Cornelius Hota Skinner has Susan B. Anthony in the cavalcade of America. In a small town of the America of 1838, a girl just arrived home from an academy for young gentlewomen had returned to her father's household, presumably to fold her hands and wait for her husband. But that young gentlewoman was Susan B. Anthony. Susan, you've had your nose buried in that newspaper for an hour. I've been reading President Van Buren's message to Congress, Father. Didn't they teach you at that finishing school that young ladies are not supposed to stick their noses into politics? Lucretia Martin, Elizabeth Stanton do their fighting for women's rights and their perfect ladies. Women's rights? What rights? Susan, you'd better begin doing some work for your hope chest. That's my advice to you. Father, if all I'm expected to do is gather some things for a hope chest, why did I need an education? Well, so you will be a credit to your husband, of course, the woman of attainments and adornment for some man's household. So that's it. I've been groomed to adorn somebody's household like like a prize mayor and a stable. Susan. Oh, Father, I shocked you so terribly, haven't I? I do apologize. So so so useless. I was wondering, Father, couldn't I find some employment? Employment?  Women don't work. As long as I'm head of this family, you will have a baby. But Father, there are women working. There are women in your factory. I saw them. You have no place in the factory. Yes, I have, Father. If other women can work, so can I. Oh, please, Father, it's worth a try. Women have rights and they'll be recognized someday. All right. All right. Go ahead. You will soon forget these noble ideas, young lady. We'll see if you like to work after a few days at the looms. Then there'll be no more talk about women's rights from you. Are you speaking to me? Sure. What's your name? It's Susan. Susan. Oh, Mary. Never worked before. Have you? No, I haven't. But I'm happy to work. It's what I wanted. You won't get what you want here any place. What is there in life for us women? Take your walk. Who's your home? Sure, I'm Stanton. Old Hawkeye. Who'd you think? You mean my... I mean our employer? Sure. We don't want us to talk when we're working. Better come to meeting tonight. Learn a few things. What kind of a meeting is it? It's for women's rights. But why all this secrecy? We got to keep our jobs. But you should know what's wrong with having a meeting against the law for women to hold meetings. You look sure it is. But don't forget men make the laws. That's why we're having a meeting. We got to organize for our rights so we'll have something to say about things. I think I see now. Yeah, we don't only mean here. We mean outside. In our homes. Our kids. Things like that.  Yes. I'll be there all right. Yes, I'd like to attend your meeting very much. Stanton, on behalf of our working girls organization for women's rights, I want to thank you for coming here this evening and bringing us your inspiring message. Thank you, Madam Chairman and young women. Now, in closing, let us keep these resolutions firmly in our minds. We shall organize a movement to bring to the women of this country the full and equal rights as citizens. They are now denied. Our primary step will be to secure for women the right to vote. Once this is accomplished, our nation will see the complete emancipation of women in every walk of life. Thank you and good night. Well, girls, that's all for tonight. Meeting adjourned. Mrs. Stanton. Mrs. Stanton. Yes, what is it? Mrs. Stanton, you probably don't remember me, but I heard you speak at our school. My name's Susan Anthony and I... Oh, yes. I do remember you. You were the one who asked so many questions. But what are you doing here? I'm working in the factory. But you don't belong in a factory, Mrs. Anthony. Oh, yes, I do. Anywhere I can learn things, I want to do something for women's rights. You do? Do you very much? Yes, Mrs. Stanton. Mrs. Anthony, will you take my advice then? Yes, I will. Then give up your employment. Be a teacher. It's the one profession open to women. You can help our suffrage movement by teaching what it means to our youth. Will you do that? I'll do whatever I can, Mrs. Stanton. The New York State Teachers' Convention is now in session. The first question scheduled for debate is the question, what can we do to increase the public's respect for the teaching profession? Today, the chair is ready to recognize delegates who wish to speak to the question. Mr. Chairman. Mr. Chairman. Mrs. Anthony. I wish to speak to the question. Well, Mrs. Anthony, our time being limited and recognizing a delegate not versed in parliamentary procedure, that is... Mr. Chairman, I know enough about parliamentary procedure to know that you are violating every principle of it at this moment. I repeat, I wish to speak to the question. Well, is there a second? I second the motion. Discussion. Mr. Chairman, I raise a point of order. No woman has ever entered into parliamentary discussion. I hold that precedent rules Ms. Anthony out of order. Is it the gentleman's contention that I am not a qualified delegate to this convention? Not a delegate qualified to enter into debate. There's nothing in the rules of this convention disqualifying any delegate from debate. Mr. Chairman, is Ms. Anthony to be ruled solely by the rules of this convention and not by moral and natural laws? There's nothing in the rules specifically prohibiting murder on this floor. It might be to the gentleman's interest if there were. Gentlemen, gentlemen, please. If there is no objection, the chair grants Ms. Anthony the floor and limits her time for debate to one minute. Thank you, Mr. Chairman. One minute is ample for what I have to say. You ask why the teaching profession is not as highly thought of as, say, the profession of medicine or of law. I'll tell you, women who are not considered bright enough to be doctors or lawyers are nevertheless considered bright enough to teach the nation's youth. If you want to improve your station in life or you'll find gentlemen, I suggest you join the woman's suffrage movement. Mr. Stanton, I'm not a teacher anymore. I know. I read the papers. Excuse me, you shouldn't have mentioned suffrage. We must be greater in numbers before we'll have sufficient influence to amend the constitution. Mr. Stanton, at high time, someone did. I have a petition here for the legislature and I'm going to have 10,000 names before it adjourns. But this is for women's suffrage duties. We can never get signatures for this. I think we can. High and low. And I'm going to get the support of the biggest editor in this country, Horace Greeley. What can I do for you? Mr. Greeley, years ago you were almost alone among editors in your support of women's rights. We wish to know why you are opposed today. Ms. Anthony, I have always favored women's rights. I believe that economically, financially, and in the eyes of the court, women should stand on equal footing with men. But politically, no. But Mr. Greeley, you must realize that without the ballot, woman has no power to improve her position in all the other respects. Are you aware, Ms. Anthony, that the ballot and the bullet go together? If you vote, are you all so prepared to fight? Certainly, Mr. Greeley, just as you fought in the late war at the point of a goose quill. Ms. Anthony, this is my final word. I stand on the fact that the best woman I know, my wife, does not want to vote. Pardon me a moment, Mr. Greeley. This is Curtis. Yes, Ms. Anthony. The petition, please. Mr. Greeley, I hold in my hand a petition signed by 300 women of Westchester County, asking that the word male be stricken out of the Constitution. I am not interested in the list of names, Ms. Anthony. Perhaps you will be, Mr. Greeley, when I tell you the first name on the list is Mrs. Horace Greeley. And I tell you, there will be thousands more. What? Help you undermine the sanctity of the home? No. Will you sign the petition? So you're Susan Anthony. Why, I heard you was a worst ever, but you're not at all. Yes, I'll sign it gladly, Ms. Anthony. Will you sign the petition? Why don't you stay home where any decent woman belongs?  Will you sign the petition? Certainly not. The place where you is in jail. Will you sign the petition? Yes, I'll sign it. Will you sign the petition?  I didn't expect the pleasure of seeing you on this train. Oh, good morning, Senator. I don't see how you stand this constant traveling about. As a junior, Senator, I made many tiresome journeys to see my constituents. Thank heaven, I don't have to do that anymore. Senator, are you really so secure you don't have to find out what the people want? You women will never comprehend the elemental in politics, Ms. Anthony. People don't know what they want. Perhaps you should go back to Elemental, Senator, and meet your constituents as you used to. What do you mean by that? I mean, I've been meeting your people. I've been traveling all over America, and I found they do know what they want. They want women's suffrage and they're going to get it. You're very determined, aren't you, Ms. Anthony? I have a plan, Senator. I'm going to do two things that women aren't supposed to do at all. I'm going into a barbershop. What? And I'm going to vote. Who's next? Oh, excuse me, lady, you don't want to come in here. This is a barbershop. Oh, but I do. Isn't this where you register? Well, yeah, but, well, right in the back room, man. Thank you. Pardon me, but is this where I register to vote? Boy, here's a lady who wants to vote. Hey, you're Ms. Anthony, aren't you? Yes, I'm Susan Anthony. This is my voting district. I'm afraid not, ma'am. Only men can vote. Is the Constitution a joke? Well, what do you mean, joke? Well, I have here copies of two amendments to the Constitution of the United States. Amendment 14 says that all persons born in the United States are citizens of the United States. Yes, I know all that, Ms. Anthony, but you... And Amendment 15 says that the right of citizens of the United States to vote shall not be denied. Yes, but you can't... Does it say anything about male or female in those amendments? No, it doesn't, but I... Are women persons? Now, you know that ain't the point at all, Ms. Anthony. Oh, it is. It's just the point. But I can't register, you miss? You can't slot the Constitution. Well, I don't know what I should do about this. I know what you can do. You can register us. Well, may mean my neck and yours too, Ms. Anthony, but here goes. Your name, address, and occupation. Case of the people of the United States versus Susan B. Anthony. It is charged at the defendant on or about the fifth day of November, 1872, at the city of Rochester, New York, and an election held in the Eighth Ward for a representative in the Congress of the United States did then and there vote without having illegal rights. Gentlemen of the jury, you've heard the evidence presented in this case. I will not expatiate on the character of the defendant. Her behavior has been a nationwide scandal for many years. This case has nothing to do with any constitutional issue. It's a question of fraudulent voting. I ask you to find the defendant guilty of this crime. Your Honor. Mr. Seldon. May it please the court. As counsel for Ms. Anthony, I strongly object to this proceeding. This is a criminal charge. Your Honor has no right to direct the jury's verdict. The clerk of the court will take the jury's verdict. Your Honor, I demand that the jury be questioned individually to get their opinion for the record. Denied. The clerk will record the verdict of guilty. Now, has the prisoner anything to say why sentence shall not be pronounced? Your Honor, I have many things to say. My natural right as a human being, my political right as a citizen of this country, even my judicial rights as a prisoner at the bar are all being violated. I repeat the question the defendant explained to the court why sentence should not be pronounced. Certainly. You have denied me the fundamental privilege of citizenship. You have degraded me from the status of a citizen to that of a subject. The court cannot allow further time. Your Honor, I'm simply stating why sentence cannot be pronounced against me. Your denial of the sentence cannot be pronounced against me. Your denial of my right to a trial by a jury of my equals is an offense against law. The court cannot allow the prisoner to go on. May it please your Honor, not one of those jury men is my equal, but native or foreign born, quite a black, rich or poor, educated or ignorant, sober or drunk, each and every man of them was not my equal, but my political superior. Is that all, Miss Anthony? That's all. And I ask not leniently, but a court that will do you far more harm, the full rigor of your self-constituted so-called law. So be it. The sentence of the court is that you pay a fine of $100 and the cost of prosecution. I'll never pay once any of that fine. What is the alternative, Judge Hunt? The court cannot permit the defendant to make a martyr of herself by resisting the court's sentence. Then I repeat, I shall resist this injustice to the end of my days and persuade all women that resistance to tyranny is obedience to God. Susan B. Anthony did resist, and fortunately for her cause, her days were long. They were long enough, even for a hostile press that had once reviled her, to cry out against that same injustice. And as the long days rolled into the long years, she became even to her enemies a brave and heroic figure. There came a day when her secretary entered with a morning mail. Good morning, Miss Anthony. Here's your newspaper. Thanks. And listen to this. As we approach a new century, the 20th century, a valiant fighter of the old is approaching her 80th year, and the whole nation takes this occasion to honor the spirit of Susan B. Anthony. Well, Miss Anthony, that's a great change in what the paper used to say about you. Oh, I know. They think I've failed, and at 80, they no longer fear me. Well, I'm thinking of retiring soon. That should bring even more bouquets from the press. Retiring, Miss Anthony? Yes. But before I retire, I've got one more job to do. What is that? I have a letter here from Lady Aberdeen, the leader of the women's suffrage movement in England. If I can help the suffrage movement in England, it will help us here. But you know the influence of Queen Victoria in England, and she's violently against women's suffrage, that if Queen Victoria were to receive me at Buckingham Palace. Oh, Miss Anthony, you're the greatest politician of modern time. Thank you. That does me more good than a dozen flowery editorials. Her nudge to the Queen will be pleased to receive an audience at Buckingham Palace. Her loyal subjects, the Lady Aberdeen, and the most especially desires that Lady Aberdeen's guests, Miss Susan B. Anthony, will be able to accompany her.  You will find the Queen quite as easy to talk with as anyone should I curse her. For Americans, it's optional. And I should say, there's a Chamberlain now. Her Majesty the Queen. She's so very, very old. Not much older than you and I. It's as if she were carrying an enormous burden. And she is. She's begging to us now. Lady Aberdeen and Miss Anthony. Lady Aberdeen. Your Majesty. And Miss Anthony. Oh, how do you do? We are pleased to welcome you, Miss Anthony. Your Majesty is most gracious. We have been interested to observe your work for the political emancipation of women Miss Anthony. It is an heroic work. But we must confess, we do not in any sense embrace your view. But Your Majesty rules a great empire. Out of beauty, not out of choice Miss Anthony. When the Prince can't thought to other liars, we exceeded to his every wish. We have never had cause to regret it. All women have not been so fortunate or magnificent. Age has probably made us both more tolerant Miss Anthony. But even should yours be the right view, I do not believe that in our lifetime we shall ever see the political freedom of women. And if we don't, Your Majesty no one can live forever. And someone has said that a man is immortal as long as one idea lingers behind him when he's gone. I can only hope that the idea I have fought for will be of everlasting good when I have won. Susan B. Anthony did not live to see women go to the polls as full-fledged voters. But the right to vote was the priceless heritage she has left to the women of America. For her lifelong crusade in the name of complete freedom, Susan B. Anthony takes an honored place in the Cavalcade of America. Ladies and gentlemen, the star of this week's DuPont Cavalcade, Cornelia Otis Skinner. Thank you. The story of a woman who lived a life of sacrifice.  Nothing was too great. No fight was too hard. The free spirit of Susan B. Anthony could not be conquered. It seems to me she has left us that spirit. And if she were among us, we would see her, we'd see Susan B. Anthony out front as she was in her own time. And we would hear her, hear that moving cry of hers against whatever injustice is striking at life, liberty, and the pursuit of happiness. Susan B. Anthony was that kind of woman. Thank you. Thank you, Ms. Skinner. And now I've heard about next week's program from the DuPont Cavalcade of America's historian, Dr. Frank Monahan of Yale University. Many years ago, the American philosopher, Ralph Waldo Emerson, said that when nature has work to be done, she creates the genius to do it. And so there came in time one man who devoted his life to the preservation of the human race against the deadly enemy, Yellow Fever. This man was Walter Reed, whose story we will bring you next week. In these times, it is well for us to recall the significance of a triumph for the human spirit and to accord that spirit our fervent tribute. In the DuPont exhibit at the World Fair of 1940, you can see for yourself striking demonstrations of the numerous things which DuPont chemistry has developed or improved for your convenience and happiness. This is a cordial invitation to you as a Cavalcade listener to visit the DuPont Wonder World of Chemistry exhibit. There, an alert staff of people will be happy to welcome you and answer any of your questions. Give our story of Walter Reed. The DuPont Cavalcade next week will present the distinguished radio actor, John McIntyre. The orchestra and the original musical effects on the Cavalcade of America are under the direction of Don Boorish. This is Basil Rise Dale sending best wishes from DuPont. This is the National Broadcasting Company.


Hi, I'm Dean Perine, Executive Vice President of JSA and on behalf of 1623 Farnham, I'd like to welcome Mr. Brett Christiansen. Brett is the engineering manager at RVIG. I'd also like to welcome my long-term friend, Mr. Todd Cushing. Todd is the president at 1623 Farnham. Gentlemen, thanks for taking the time to speak with me today. I appreciate it. Thanks, Dean. Hey, Dean, thank you.  So Brett, let's go ahead and start with you for those who are watching that don't already know. Why don't you tell them a little bit about RVIG? Sure, Dean, thanks. RVIG has been around for quite some time, a little before my time. Back in the 1950s, XE started in the telecom industry in a little mom and pop shop just offering phone service. And boy, have we ballooned since then, 70 years later and myself, six years at RVIG, here we go. And so we provide internet, television, phone, HPVX, fiber transport business, to business and residential customers. We have our own owned 13,500 wrote fiber miles. And that's what we really strive for is to own that stuff so we can take advantage of that physical asset that we do have. We serve more than 20,000 businesses today, 700 medical facilities, over 350 E rate, which we call schools and libraries. And then we've got over 54,000 internet customers alone. And to the subject today, data centers, we are currently connected to 18 data centers across the upper Midwest. And we operate in generally mostly Minnesota, big hubs in Minneapolis, Rochester, St. Cloud, headquarters in a little town called Perum, which is about an hour east of the Fargo-Moorhead area. And we have branched out into most of the upper Midwest states. Very cool. So Brett, you mentioned the word ballooning. And I think that that's a great word for my next question actually, because it appears that your network growth has balloon considerably in recent months and years. Why don't you tell our viewers a little bit about that network growth? Sure. So ballooning in my terms is network expansion. And how do we look at our network and work with the 1623 Farnums and create those relationships? We start down with the simple residential end user all the way up to the township level, to the county level, state level, federal level. Where can we make the most bang for our buck in situation also providing that customer experience that people expect from us? We are that smaller. We don't have that big carrier name touch feel to us yet. We're becoming that regional carrier in the space. But we are willing to reach out, grow and this relationship with Todd has let us do that. It was kind of a leap of faith deal, right? We had nothing really outside of Minnesota. Started the conversations with Todd. We found a way to get a physical path to Nebraska, Omaha specifically. And it's amazing what you can do with two strands of fiber this day, right? So our system currently today has equipment to Minneapolis and equipment in Omaha. And between the two on the two strands of fiber is 64 channels. Each of those channels or lit windows supports up to 300 gigs of data. So if you do the math, that is big bandwidth transport. And that's our everyday niche. That's what we're after. So. Excellent. So you started to get into the relationship that you have with 1623. So why don't you tell our viewers a little bit about more about that relationship and ultimately how they're helping you kind of navigate that edge data center connectivity? For sure. So one of our big demos is be easy to do business with. And that's exactly what I would describe this relationship with Todd and his team. I went on site physically and Todd was there. Todd welcomed us at the front door. Todd shook our hands. Pre-COVID, right? No masks. He took us through the building. He took us through the floors. He took us to the meet me rooms. He took us to where our cross connects would be the cages. He talked about the HVAC system in greater detail than my dad can. And he's a plumbing and heating guy, right? And so he knew Omaha. He knew the ductwork system in Omaha. And that's where our big is always like, well, who can we talk to to talk to that next carrier that we don't even know exist today? That wants to get to Minneapolis. That wants to get to Fargo that we can leverage to get to Chicago. Those things, that's where we really leverage Todd, creating those relationships. And it's a positive partnership is what it really is. And what that allows us to do is set up a network to network interface in the term of telco is NNI, which basically is a piece of gear that lets us talk to another carrier without physically being on site. And if it's a hospital in, I'm going to say Omaha, that has a connection to a hospital in Minneapolis or Rochester, we're here to do business with those guys. Yeah, I get it. And you mentioned Todd quite a bit. And he's all the reason why anybody would need to go with 1623. But can you tell us a little bit about why you ultimately decided on 1623 aside from Todd? It's really, truly about connectivity. It's about the space. It's about the ease of getting in and out of there. Like I said, I think in Todd helped me out. But I think you have about 50 or so other carriers that are in the co-location space at 1623 Farm. If that's not attractive, I don't know what is. When we look at data centers today, even in the Minneapolis area, you've got data centers that have three carriers, four carriers, five carriers. It may be that one carrier you want to talk to, but generally you want to get to a hub. You want to get to Farnham. You want to get to Des Moines. You want to get to Chicago. Minneapolis 511 building is the 1623 Omaha. It's two of a kind. You didn't even think there was apples to apples, but it is. Awesome. So Todd, it's your turn. So Brett could not have set you up any better than he did. So why don't you tell us a little bit about the relationship with Arvig? It started, I think, as I recall, back in the ITW days in Chicago. And we got to be friends with Tom Bros. And then he's just a very energetic person. And UpB, and knows his network very smart. But he and the team then we'd reconnect in Atlanta at ITW. And he would introduce us to three or four of their carriers. And we were talking about coming in, building a business case, helping them figure it out. I think they're at 13 states. They're fiber to tower. There's all kinds of angles in which they can touch and do things. And I always looked at their network as a bow tie stood on end. So as it goes between the different cities, it kind of comes down to the southwest corner that was could be Omaha. So they were going to come in through Sioux City, come down through Chicago. Alderna Pass are great for us to Chicago. And so there was plenty of reason to have that need for the route. But it was an openness and sharing. But really what struck me was funny was there were at least three other carriers that have come our way, sort of because of that relationship, because Tom just fills up a room. And he's just, hey, these guys are great. They're working. He's working. I think he wasn't even in our facility yet. So he was on his way to coming in. We were working on the need in the business case, but we had become friends through the process of years of talking about when it made sense. We'd love to have you in our facility. And this is what's going on. And they, on their end, wrapped up the business need. And it's been great. They're very professional. They've got a really neat cage in our facility. And we're real proud to have them in. Outstanding. Todd, let's go ahead and stick with you. For the benefit of your customers and your customers, customers, why don't you talk about what the relationship does in that regard? So the benefits ultimately to your customers, Todd. So there's a lot of people that know about other carrier names.   But if you mention, and then people start to drill down on their network and what they could provide in their longevity in the space, it sells itself. So it's a great option if you're trying to go from Omaha to Chicago, Omaha up Northwest, and you get up into other Moorhead or other places, into all the Duluth, right? They can take care of that and more. And so it's a real easy, comfortable conversation.  So we really feel comfortable that we're a carrier-neutral, but we can make a suggestion of somebody's trying to get to an area they don't know of an RV. And we can say, well, this is something that could work. We know they're in great hands. Excellent. And Brett, same question. What are the benefits to your end user customers? As minimal downtime, with Todd's team, they have a product called Remote Hands, right? And most of us, our big staff being in Minnesota, it's a six, seven-hour trip if I got in my truck and left right now. If we had to physically go on site to fix something, by the time we get there, get card access and get in it. You're talking $7, $8 of an outage. You can't have this day and age with service level agreements and the needs of people essentially moving home because of the COVID pandemic, right? And then when you work together, as Todd said, you can keep those costs down, very minimal, right? And so just the welcomingness of that team helps support our network. And as he said, he used RV as an example. And we're thinking of the other providers that we don't know about today. We already are part of a collaboration over the last 12 months because of what we've done at Farnham. We became part of a new team that we didn't even know exist of companies like ourselves to help do distribution. And when we can work together, we can provide that customer experience, the level of service, and we can compete at a low-cost offer, which probably doesn't make sense to people who aren't familiar with the path, but it sure works well. Outstanding. Gentlemen, thanks so much for taking the time to speak with me today. I appreciate it and be happy and healthy. Thank you. Same to you, Dean. Thanks. You bet.