Hello. Welcome to the sixth episode of Ignato for Breakfast. I'm still under the impression of feminist solidarity. Almost 100,000 people together at a very strong demonstration in Madrid, my city on March 8th. That was exceeding all expectations. It has also been on March 8th marked by the war in Ukraine. And in this moment where everyone is looking towards Ukraine, but also forgetting a bit about Yemen, Western Sahara, Palestine or Congo, we need a collective response. A common feminist agenda for peace. Also, we need to create our own frame as feminists to explain important elements that now are in dispute. Like war is not peace. Like militarism cannot prevent war. Or that militarized solidarity is a contradiction in itself. Or also that war and destruction is not inevitable. That's why we call on our friend Christine Cart, co-chair of the No-to-war, No-to-nato network, and part of the group Woman Against NATO. She's active in environmental peace and feminist movement. And she's part also of EcoMujer, an organization with human women that work on ecofeminism and peace. Christine is here today to talk to us and to help us think together about this important moment for feminism and peace. Hello, Christine. Glad to be with you today. First of all, how did you spend International Woman's Day in Dusseldorf, Christine? Hello, Otto, Gessa. I spent March 8th as a normal working day in Dusseldorf because, unfortunately, it's only a bank holiday in Berlin and not in other regions in Germany. And we had a Saturday before March 8th a demonstration in Dusseldorf for women rights. And we were also active in February 14th on one billion rising against violence. Against women. So it's a much normal day for me. That's interesting. Thank you. Thank you, Christine. I mean, women have been protesting and being demonstrating for a century also against war. And we have many examples out of the German history, such as Kato Kowicz, who spoke out against war a century ago, when it seemed that the workers' movement in Germany was so hopeful that there would be a better future and then World War I broke it all and broke these fragile alliances among workers' movements of all the world. And it seems that we are in a weirdly similar polarized situation right now again. And she pointed out that peace is by no means a default setting in capitalism, but that pacifism is not simply a matter of staying calm or looking on, but that it is indeed hard work. And we need to explore what NATO has to do with all that. We've been looking at NATO's history and NATO's current agenda, for example, in regards to China. We've explored the responsibility that NATO carries for the current conflict in Ukraine in the show before last. And we have highlighted some of the actions of our friends in the peace movement, demonstrating for peace and against militarization of budgets against NATO, for example, in Belgium and in Italy and in other places. Before we get started on the different questions that we have prepared for this week, there are a few organizational points. First of all, of course, Eat NATO for Breakfast is part of the Peace Summit. The Peace Summit is a unitary space mobilizing towards the NATO Summit, which will take part in Madrid this June. Please check out our website, sign our declaration, and also, very important, join us for our next open plenary, where we will be discussing the mobilizations that we want to see, that we want to work towards in Madrid. The next open plenary is next Saturday, March 19, at 3pm CET. Again, registration and everything is on the website, which we will post in the public chat so that you can check it out. Also, we want to shout out to our friends from People's Dispatch, Yay, who are making all this happen and who are hosting us so kindly. And also, one last thing, because we can, we want to recommend an event that is happening later today by our friends of No Cold War. You may remember in the third episode, we talked with Fiona and Ajit about this No Cold War on China, this New Cold War on China, and what this is all about. And at 3pm today, they will be talking about racism, witch hunts and the New Cold War. There will also be a link in the chat, in the comment section, so that you can check it out and maybe join in. But let's get started on today's topic, feminism, feminist agenda, off NATO, against NATO, et cetera, et cetera. We have a few guiding questions, and we look forward to discussing them with Christina. Laura, take it away. The first thing that we want to talk is acknowledging that we are in a time of battle of ideas that in the media and social networks, there are thousands of mentions to freedom and democracy while they are talking, in fact, about war. Feminists have been working for some 200 years, creating new words and filling others with new meanings. We have been in the battle against the concept of patriarchal universality that excluded us women, black people, indigenous and colonized people as citizens. We have developed an analysis of power relations, of the oppression of the poor. We have redefined freedom, equality and fraternity. Now, what battle of ideas must we lead for a real and sustainable peace, Christine? I think it's always the same battles. And it's very important that, yeah, I think not only to speak about equality, but also to speak about justice, because with equality, we hide real underlying patriarchal hierarchical structures and make invisible all the suppressed people and women and also people of colors and poor people. And one point to get women visible and give women the chance to participate also in all structures and societal relevance was the UN Security Council Resolution 1325. It was declared or decided in the year 2000 and it was the first time that women not only recognized as victims of wars and violence, but it also recognized women and actors in the society and want to give them the possibility to really take part in all negotiations of society, especially in conflict situation and in post-conflict situation. And NATO also tried to implement these UN Security Council Resolution and used it to force the militarization of the society because they include women in their tool and their dirty job to kill people because nothing else is what a soldier do and what the task of the soldier is. And therefore we have to keep this UN Security Resolution out of NATO and we have to overcome NATO and also the militarization driven by NATO and not only NATO, he drives this militarization. Also the EU is part of this militarization and drives this further on. And the real problem of the militarization and the work against is that we have to define new steps we want to have on this task, women peace and security and this is to redefine security as a security without military and common security without any enemy pictures and to have it based on cooperation and not on confrontation. And these human security also have to think about mutual relationships between different countries and have to respect all the sovereignty of the others and the security issues of the others because our security is only possible if we also respect the security purposes of our counter and only together we can overcome this militarization and confrontation and of course we also have to see that we overcome this underlying structures like you said earlier Nora, patriarchal and hierarchical power structures which are related to militarism and militarism reproduces always these structures and these are not helpful for solidarity, society, democracy and participation. Yeah, that's true. Thank you, Christine. I want to go back to the visualizing women. There is like in liberal feminism there's an idea that we just, you know, visualizing women creating jobs at the top will somehow change things. For example, NATO is in fact looking for a woman as secretary general. You laugh, it's not yet exactly known who will replace Norway's Jens Stoltenberg whose term ends in September 30th, 2022 and he's not eligible for reelection but there's broad consensus in NATO that his replacement should be chosen but scheduled in Madrid so this is another interesting point for us organizing the peace summit should actually be a woman. So for the first time in 73 years history a woman could occupy this highest political office of the world's leading military alliance. Some people, some would call themselves feminist would see this proposal as an advance but of course it is just a whitewashing and it gives a progressive modern image while at the same time maintaining the same dynamics of control and destruction. Like what would we say? What difference would it make if Theresa May or Ursula von der Leyen, some of the proposed women maybe they find another would suddenly run NATO and then there's another point about that is frequently made when feminists want to talk about peace and the peace agenda and they're being met with a strange essentialist theory of how women are how war is a man's business and somehow women are more peaceful and more peaceful by nature and for example if women would run the world or if women were just in charge then there would be no more wars which is also a ridiculous theory or not really a theory to begin with and is of course also not true in hindsight for example the situation in the Ukraine must be understood and this is history that is not even mentioned anymore in the current debate around the conflict must be understood concerning also Julia Timoshenko who went from being the sort of Joan of Arc of the pro-European orange revolution to falling into complete disgrace due to corruption. Julia Timoshenko is the embodiment of this energy and political of the political oligarchies that divided the post-Soviet that divided the Soviet Union from within and like filleted completely and then there is someone that we do hear currently about Victoria Nuland of Ukrainian origin foreign policy advisor to the democratic government in the US and also the person who was leaked to have said fuck the you which reminded us of how little the European Union actually plays a role in the current conflict so women do make war and women at the helm of NATO will not save us so what are the real arguments that we need to think about when we think about patriarchy and war I'd like to hear Nora on this one we've debated this frequently well as you were pointing out Francisca and Christine one thing is to be civilized women and then is for what right how is the perspective in this frame that we are trying to explain and exchange on how feminism has also a framework on their own to explain security and also an alternative project for us in the planet so basically when we think about patriarchy and capitalism we need to think about this as an alliance that runs the system war in fact is a tool for maintaining the domination the oppression and also producing fear that then you know will be facing facing it with war so a feminist approach to war is for sure not that woman which is for the nuclear button this is not feminism but rather to be part of the dialogue as Christine was saying as the solution part of the table where a piece is pushed forward and try to make it so we should be part of the solution of conflicts as well as tackling the reasons that lie behind war as Christine was saying before the geopolitical interests the economic interests we need to think and that's the critique of view that feminism brings us to see the world in fact we are very preoccupied that with the unfolding of the Ukrainian war now NATO would be reinforced and supported we need to fight the consensus building by the corporate media and bring our feminist proposals to the table that the oppressed don't want women to kill our responsibility lies with the oppressed if we want to fight patriarchy and war we need to promote an international peace process that disbands NATO that abolishes nuclear weapons etc so as always the feminist arguments is in fact to challenge violence not to be part of it we know that violence is not inevitable we have a dignified life for all peoples that means that every life is valuable that means that we as women need to think on the consequences mental health the destruction of communities and the daily life for people the access to education is a stop when we are in the midst of war the health security I don't know the access to electricity this daily life we need to support we cannot defend the actual power structures we have to challenge them we have to explain that the struggle for peace must be an anti-imperial struggle that fights against an economic, political and cultural system that oppresses us also that uses violence against us and that destroys the planet many of us have seen the graphics in fact that explains gender violence and I think this is a very very good example we this graphic is like an iceberg and at the tip of of the iceberg are the feminicides like the assassination of women that is like the most extreme and visible violence that we suffer and that at the base is the sexual division of labor the double exploitation of women the care work that we need to to take over feminists as we say in Spain we have a plan we are going to change the system and we say this because we need to think about what's in the base of the iceberg how is war being forged capitalism and patriarchy uses war against us that is to say that the system produces wars and destruction that it does not know how to resolve and we are left to pick up these pieces being in fact the life jacket of daily life on our back is the reproduction of life these in the context of war hunger and poverty is multiplied so feminists have to fill with meaning strategy and political articulation and active peace that defends the interests of collateral damage or acceptable loss that's the way that those people call us in particular feminist economics provides many keys on how to move towards a system of peace and social justice as Christine was saying before a historical feminist claim in Spain in fact when we go to mobilization is neither war that destroy us nor peace that oppresses us that's why we understand that peace is not only a ceasefire feminism challenge the status quo thank you, Christina do you want to yes I want to add maybe first I will remember to quote of Adana Shiva she told us women are not more peaceful and making the care work because of their genes they are doing this and more for the environment and they are doing this because they are put down to this work with a lower value and the work for men are work with a higher value they are in the industry and all on the other place and the so called production places and women are put down and the production places and this is a hierarchical structure and this we have to overcome and for me it's dualism which attacks women in every situation and not only women it's also peoples of colors and also LGBT communities and others that sees different values and this we have to overcome and we have to overcome that we working in a society based of capitalism, racism and militarism where values like rivalry and competition and extreme individualism are the main values with a very high level and all the so called female values like concern and reconciliation and taking care for us and also in the economy make it as working this commons and solidarity economy and things like this have to put in the front of everything and not these so called masculine values because these are also on the physiological way causes for all the violence against all those who are not able to resist really these violence and it leads to a toxic masculinity which is necessary to get people at least mostly men really fighting in a in the war and kill other people because and this we have to overcome that we also overcome this in our societies and look what have happened with the corona pandemic NATO and at least also the German army fighting against corona as they called it but at least they were militarizing the society the Bundeswehr the German army was placed in the cities and in the health system to support them but at least they also bring with them their hierarchical and patriarchal power structures and the value of the trained workers was oh what should I say wasn't really respected things that we can do it better in this bad way and I also have to see how we can overcome this yeah I think you are both in you're both speaking about the same topic that we need to address sort of the root causes of violence and talk about violence that exists already in the society and only finds its explosion in a war so and I think that we need to address this these root causes of violence from with a feminist lens and also we need to maybe take that moment women rise up against war and defend peace in very diverse kind of ways and for many people who are now suddenly being in this shocked situation of having the conflict in the Ukraine break out maybe that is a moment to talk more to take this opportunity to talk more about the already existing violence for many women to actually rise up against war and defend peace this comes from direct experiences of a violent conflict but also of poverty and situations that are only secondary related to a direct war such as sanctions for example that would also like economic sanctions which have a huge impact on the lives of ordinary people and then also of women so we need to make sure that we are confronting these realities and the reality of violence in our society all the time but we also need to fight against war because we have a commitment to put the needs and well-being of the people by the way of all people at the center and this is another thing that we are viewing that we are watching right now with the conflict in the Ukraine we need to put the needs and well-being of all people at the center not just white or blue-eyed people as is being stated by some in the media the needs of Afghan Yemeni, Kongoli, Sahari or Palestinian women are also important to us and we need to fight to ensure a dignified life instead of market profits and the rise of hatred, intolerance and the extreme right which always come together and oppresses us we know that even if bombs do not fall on our heads violence takes many forms economic pressures and such as sanctions, increasing racism etc they have a specific impact on us and so to raise the no to war as our only banner places us sometimes in a naive and somewhat passive situation that is not only not useful anymore but never been useful particularly so this is why the peace agenda is a feminist agenda and I think this is another important question what do we need to put on the feminist agenda right now first and foremost in a moment when there is a lot of confusion about what a peaceful world should look like or could look like and what we should really be mobilizing for because this is again I think an experience that many of us have made in the last weeks that mobilizing around peace brings together an awkward alliance of people who may be shouting peace but when you question it a little further raising in the military budget is difficult to see how this will increase our all security or how this will lead to peace so maybe a sort of a last word Christina maybe you can give us some advice on how do we how do we mobilize where do we address where do we put the main issues how do we act in this you know how do we stay true to a feminist agenda for peace in a moment that seems to tear us in all different directions and also obfuscates you know our perhaps more long-term organizing right now I think the first point is to really put an agenda for peace independent a feminist or not feminist agenda on the table because this went away now everyone cry not everyone but even in the peace movement there are voices for sanctions against Russia and you told us Franzi said sanctions harm the normal people and not the oligarch maybe of course you can take away the property of the oligarch but most sanctions are harms the normal people and also harms German people living in Germany and this we have to address and also weapons are not a tool for peace weapons are always killing peoples and weapons are destroying the environment and war are destroying the environment and therefore the only tool for peace is negotiations and we have also to talk with the aggressor and find solutions out of this terrible situation and of course the first is to get a ceasefire and to let people out of the conflicts zone and then it's a second step we have to see that we really can overcome the causes of war and violence and build civil human social ecological gender justice society but first we have to get the weapons stop firing and get again in a dialogue with conflict parties to come to peaceful and civil solutions in this conflict situation and instead of spending 100 billion dollars like in Germany now to the army to get it better as a defense army which is nothing to do with defense these new weapons they want to buy this is a aggressive weapon we need this urgently for social and economical reasons and also to help all the refugees coming from Ukraine to Germany right now and not only we also have still refugees from Afghanistan and Syria and we have to stop to push them back in their countries there's nothing to do with peace and in society there's a lot of structural violence it's complicated to live in peace because this reproduces all these violence and the poorest the most effective as always yeah very much now I think that as you are as you are seeing Christine we need a common agenda but we need a common agenda with also the feminist lens the feminist framework and we need to work together all the peace movement and also as you were saying before all the movements that in fact are fighting for social justice social justice cannot be found in the middle of a hungry crisis because of sanctions right so this common sense we need to push forward we need this kind of consensus building the same way that they do we need this kind of common strategy for sure for me as feminist I see some small things very clear the same way that it's not okay for men to mistreat a woman or saying that feminicides are natural or inevitable we must be saying together that work is not inevitable right because violence is inevitable there are other ways to solve this and I think that we are part of this material reality this violence is suffered in our bodies in first person so we cannot naturalize all those people suffering if they are in Russia or they are in Ukraine also as you were pointing out at the beginning I want to reinforce the idea of being invisible we have been fighting for hundreds of years because we were invisible but not only me that I'm in Madrid and I'm white and I'm part of the imperialist powers or colonized powers but also this is I think the moment you tackle of on our own contradictions those I don't know statements on those are not refugees they are white with blue eyes we need to fight that we need to precisely now talk who is invisible we need to push forward also a common piece agenda that explains the situation on Palestine right those people that are fighting with their bare hands with you know silence like in German like in Congo like in I don't know in a lot of places so we have to uplift the invisible conflicts and also connect the dots all those words as you were saying of these systemic structures that lies behind this situation of polarization right or you were saying like these two options in life like we are the third option that is not like Blair's but is one that can change how we see each other and for sure now another thing that we can really tackle as feminists like everyone is talking again about nuclear power I'm 34 and when I hear the nuclear theme I hear it in like in movies like something in the past and now again the nuclear issue is being I don't know at the forefront of the commentary so why we are talking about this again right this is very dangerous as you were saying like the planet we need to be focused on the real issues and I think that this is a really good moment to connect the peace agenda with the feminist agenda so I don't want to keep it very long but the refugee issue at least to us as Europeans and feminists we need to also connect it with the project of the European Union with refugees the issue of those being white and we are all receiving it for us in Spain very very difficult this discourse because we have this southern border where people has been killed where people that comes through the Mediterranean you know they are mistreated they are killed they are violated so I think that we have to really analyze together the moment and try to think to push forward elements that come to these routes and that bring also elements we cannot be feminist only for our issues but the same way that we talk about violence we need to connect it with peace thank you thank you Nora I think this is a really good moment to well to remind or to ask all of you to join us next Saturday because we will be talking with two awesome activists from the antifrontex people who will talk to us about the militarized border regimes about this fortress Europe that Nora was just mentioning this you know neoliberal project or colonial project of keeping Europe to the Europeans no matter what that is being heralded as at the moment and also what role NATO for example NATO plays as a military alliance in the displacements of people around the world and how this all again connecting the dots so I would like to invite all of you to join us next Saturday on this conversation I would like again to ask you to check out the peace summit website because all the dates and information will also be there and of course tell your friends and comrades to join us to disband to fight for disbanding NATO and creating an actual sustainable peace worldwide we all need it any I want to make sure that everybody has a chance to say goodbye so any last words please go for it and I thank you again for tuning in and watching us and thank you Christine for making the time thank you for giving me the chance to tell something about no to NATO issues and the militarization driven by NATO and for me the most important place is to make feminist issues visible because feminist issues are human issues and personally I think to overcome the neoliberal individualistic approach to societies we have to come back to societies as communities which are working together and which are producing together one example is on one side Cuba and on the other side look to Rojava and Kurds in northern Syria they are examples how we can build up better at least feminist societies and this way we have to support and go on and see that women will be visible and have the chance of participation in justice not only as a second choice I think that all this history of struggles in Cuba, in Rojava but also in all these conflicts like the woman in Iraq the woman in Algeria the woman in Vietnam in Afghanistan I think that all this history of feminist struggle for a lasting peace has taught us that peace is full in fact of courage and struggle so forward sisters let's fight for a peace that is not just a ceasefire but a transformation of this violent world into solidarity, mutual respect equality, rights operation and for sure sustainability with the planet so never forget that weapons will not save us, we will so see you next time today thank you bye bye


Foldex Cat vs. Egyptian Mow Cat. What are the differences between these two cat breeds? The history of the Foldex begins in 1992 in Quebec, Canada when they first started popping up on the scene. The breed was a big draw when they began appearing in cat shows due to their super cute looks. A lot of the subsequent development of the Foldex is credited to a breeder named Jean Barrette. The Foldex was officially granted full championship status by the Canadian Cat Association in 2010. These days, you can find Foldexes in shelters or in the care of rescue groups. So make sure to consider adoption if you decide that this is the breed for you. Whether the Mow is a product of thousands of years of Egyptian culture is a matter of debate, but if fanciers of the strikingly spotted cats wish to claim that they date to the times of the pharaohs, well, who knows? It could be true. The Egyptian Mow, Mow being the Egyptian word for cat, is notable for being the only naturally spotted domesticated cat. In other words, the spotting pattern was not created by human manipulation of feline genes. The cats were known in Europe before World War II, but the devastation of the war left the breed in a perilous state. The breed is it is known today dates to a silver female kitten given to Russian Princess Natalie Trubetskoy when she was living in Rome. Depending on the story, the kitten was given to her by a young boy who had been keeping it in a shoebox or she acquired one from the Egyptian ambassador to Italy. The Foldex is a breed of cat that you'll see in almost every cat color available, and in patterns that include tabby and calico. When it comes to grooming, this will totally depend on whether your Foldex is a long or short-haired kitty. If you have a short-haired Foldex, brushing their coat once a week should suffice. But a long-haired Foldex will require more frequent brushing to help lessen the chances of hairballs and mats forming. Aim for every other day although the breed will happily take to daily brushing sessions. In terms of climate, the Foldex is generally an adaptable breed of cat. Although you should always make sure that there's enough shade and fresh water available during the hotter months. The mouse most striking characteristic is his spotted coat in silver, bronze or smoke, pale silver fur tipped in black, closely followed by his large gooseberry green eyes. He is a medium-sized cat with a muscular body and a slightly rounded wedge-shaped head topped with medium size to large ears. With hind legs slightly longer than the front legs, he gives the appearance of standing on tiptoe on his small, dainty feet. A medium-long tail is thick at the base, tapering slightly at the end. The medium-length coat has a silky, fine texture in the smoke coloration and a dense, resilient texture in the silver and bronze colors. The body is covered randomly with distinct spots that can be small or large and round, oblong or other shapes. The forehead bears an M shape, the cheeks are adorned with mascara lines and the tail is banded, ending with a dark tip. On the pale belly are dark spots that resemble vest buttons. In addition to the silver, bronze and smoke colors, mouths can come in solid black, blue silver, blue spotted, a dilute version of bronze, blue smoke and solid blue, but these colors are not permitted in the show ring. These cats of a different color make fine pets, however, sharing all the other characteristics of the mouse. Hello. This video is sponsored by Beemix Pets. Are you looking for high quality cat collars at an affordable cost? Check out BeemixPets.com. Use coupon code Kittenlife to get 20% off. When it comes to the Foldex's personality, you'll struggle to come across a more loving and people-friendly cat breed. These are felines who absolutely love cuddle and snuggle sessions with the humans in their life. At times, you might become convinced you're actually hanging out with a teddy bear as you lounge together on the couch or the bed. It follows that the Foldex is a cat who adores being petted, which also means they bring a soothing presence to the household. Along with being adorable, the Foldex has a strong inquisitive streak, so make sure to provide smart interactive toys to keep the breed mentally stimulated, along with suitable cat furniture so they can explore and play at their own pace. These sweet felines are also exceptionally approachable, making them a great fit for big families or homes where there's a large amount of people always coming and going. When the Egyptian mouse is happy, you know it. He vocalizes, called chortling, in a quiet, pleasant voice, swishes his tail rapidly, and needs with his front paws. What makes him happy is being with his family, to whom he is fiercely devoted, or showing off his hunting prowess by chasing and retrieving a toss toy or stalking and pouncing on a wriggling lure at the end of a fishing pole toy. This is a moderately-to-highly active cat. He likes to jump and climb and will appreciate a tall cat tree, a window perch or two, and a sturdy scratching post that allows him to stretch out to full height. The male also enjoys playing in water. Don't be surprised to find him dipping a paw into your koi pond or aquarium, turning on the tap in the bathroom or kitchen, or splashing water out of your pool, or his water dish. The Egyptian male prefers family members to anyone else.  The male has the distinction of being the fastest domestic house cat, as she can run at speeds of up to 30 miles per hour. As with all cats, it's important to keep up your fold-ex's regular veterinary checkups to detect any health concerns early. Your vet can help you develop a care routine that will keep your cat healthy. The Egyptian mouse coat is easily cared for with weekly combing to remove dead hair and distribute skin oils. A bath is rarely necessary. Brush the teeth to prevent periodontal disease. Daily dental hygiene is best, but weekly brushing is better than nothing. Trim the nails every couple of weeks. Wipe the corners of the eyes with a soft, damp cloth to remove any discharge. Use a separate area of the cloth for each eye so you don't run the risk of spreading any infection. Check the ears weekly. If they look dirty, wipe them out with a cotton ball or soft damp cloth moistened with a 50 to 50 mixture of cider vinegar and warm water. Avoid using cotton swabs, which can damage the interior of the ear. Keep the litter box spotlessly clean. Cats are very particular about bathroom hygiene, and a dirty box may cause them to start using other places in the house instead. It's a good idea to keep them as an indoor only cats to protect them from diseases spread by other cats, attacks by dogs or coyotes, and the other dangers that face cats who go outdoors, such as being hit by a car. Keeping mouse indoors also protects local birds and wildlife from this avid hunter. Egyptian mouse who go outdoors also run the risk of being stolen by someone who would like to have such a beautiful cat without paying for it. The Fold X is a friendly feline who does very well with young children. Just be sure that early socialization takes place and boundaries are properly set on both sides and supervise early interactions between kids and cats. When it comes to other household pets, the Fold X fares well with many domestic animals, including dogs. Always supervise early interactions between the new cat and existing pets. Ultimately, early socialization really pays off with this breed. Make sure to reward your Fold X for good behavior when you bring them home to your family. The active and playful mouse is a perfect choice for families with children and cat-friendly dogs. He will play fetch as well as any retriever, learns tricks easily and loves the attention he receives from children who treat him politely and with respect.  Nothing scares him, certainly not dogs, and he will happily make friends with them if they don't give him any trouble. He is a skilled hunter, however, and pet birds or other small animals are probably not safe in his presence. Always introduce any pets, even other cats, slowly and in a controlled setting. If you enjoyed this video, kindly press the like button. Also don't forget to subscribe with notifications on so that you don't miss out on videos like this. Thank you for watching.


Ocular flutter is not a form of misdiagnose. It is a psychotic oscillation. There is no fast or slow phase, but rather fast back and forth movements of psychotic speed. The movements are in the horizontal direction and should be seen in primary gaze. Therefore, this patient technically does not have ocular flutter. She has flutter-like movements that are rotary in direction. Note how they're mainly seen when she looks to the right. You can see a burst of psychotic two-in-fro movements in the rotary plane. Here, for example, this is an example of ocular flutter. Note how there are horizontal two-in-fro movements there. They can often be elicited after moving the patient from forward gaze back to lateral gaze. Note there, for example.


We're going to talk about C++ extensions and C extension a little bit too, Groovy, Charles Cornell. I've been writing Groovy apps for about five years. Got slightly less time in web apps, but most of my experience is writing Groovy applications to automate tasks in semi-conductors, which is my background. So what got me interested in both in C++ and Groovy had some performance problems getting data into and out of a SQLite database, and so I had a C++ wrapper around that that I did to kind of get past the holdup. And I wanted to use it everywhere. I had a standalone C++ app that called that library and then I had a Groovy app that I wanted to call it from and I also had an Octave application as well. And if you don't know, Octave is an open source MATLAB code that they use a lot in the SQL process and then come up with it. And this is just some stuff that I picked up along the way. So kind of the first question is, when would you want to use a C++ or C extension? And the obvious answer is performance. There's a couple of other times, like if there's already a C library out there that does what you need, why are you using the wheel? And the other option is, which was the case I had, I had a C++ library, but I wanted to call it from multiple scripting languages. If I had implemented that in Groovy instead, that would have been more difficult. So it's important to know which one of these are the requirements for you so that you select the correct tool to build your extension. So if you're going for performance, if that's the driver for you, what can you expect? Well, like in any code, if you make bad choices about how you architect it, maybe not very much. Probably a lot less than you were hoping for. That's why, you know, when you start, you want to make sure you understand exactly what is slow because that affects what you push into the C extension and how you define your interface. The definition of the interface can have a significant impact on the performance of that extension.  What you port to your extension needs to take enough time so that the overhead of going from Ruby to C and back to Ruby isn't a significant portion of the time spent in C. And I've seen performance improvements of anywhere from, you know, 3 to 4X to over 100. So simple advice for doing started, you know, whiskey does not hurt at all. It's, you know, a really good way to start your endeavor there. A couple of things to keep in mind is if you build a traditional C or C++ extension it is going to depend on the Ruby interpreter you use. So it's not going to work with J-Ruby. It won't work with convenience. And even there are differences in the version of Ruby as well. Though those are typically fairly minor, but they do require a recap of them.  And then understand your performance needs and what interpreter you're going to use so that you select the best tool for the job. And so with that let's go through some of the tools that I came across when I was looking to do this. So FFI is, it's been around for a really long time but it's actually fairly new to Ruby. It stands for Foreign Function Interface and it's just a way in pure Ruby you can call a C function, an arbitrary C function from any shared library all at runtime. There's no compile, you don't have to set up anything. You just, in Ruby you define the interface and then you can call the C function that you need. And it's becoming fairly sophisticated and for C only it's a pretty good choice and it has some advantages. So the other one is Rice. It's basically a C++ DSL for interfacing with the Ruby C thing. So, you know, if you're writing C++ then you can define your interface in C++ and that's what Rice let you do. RB++ is a tool that sits on top of Rice and it basically writes the Rice code part. So we're going to talk about that. And then Swig, it's kind of probably the one you'd think of. First maybe it's been around for longest and it's advantages. It supports multiple languages. That's why we're going to talk about it more later. So, FFI, you know, I try to be clever to find some pictures and stuff. It's really hard to find a picture for FFI so I had to stoop to the French forces of the interior which was a resistance group at World War II but they came to my rescue. Anyway, like I said, FFI is a clean solution for C libraries. It's not good for C++. It doesn't reflect classes. And the C++ name manual makes FFI a system. It's not really applicable for that. It's Ruby only but independent of the interpreter, like I said. And it does have some additional overhead versus traditional C extension. But if you just want access to the existing C library then it's probably the least work to do. So, I mean, it's a really exciting solution and it just didn't do exactly what I needed. So, Rice is the other tool. Rice, Bill and Bolly, if anybody cares. So, like I said, Rice is a C++ DSL interface with Ruby C. It's not generic and interface generator so it is Ruby only. But, you know, if you like C++ then it's probably a pretty good choice because then you can do everything for your extension in C++. You don't have this separate Swig language or something like that. And RB++, it makes Rice more like Swig and it uses something called GCCXML which is an XML description of your C++ library and then it writes Rice code for you and then compiles your extension to build that interface. And I have not used this one. I just looked into it as one of the possible choices but it seemed kind of interesting under certain cases. So, Swig, turns out Swig is a club in San Francisco. So, kind of cool. So, Swig, the way Swig works is Swig stands for simplified wrapper and interface generator and so it parses your C++ header files and it understands nearly all of the C++ syntax and then it writes the wrapper code for you to build the Ruby classes and the methods and all that and then it does reflect the C++ hierarchy and supports multiple languages listed here and I highlighted a couple just to point out a few things. Python is highlighted because that's where Swig came from. The guy that started Swig was a Python developer and I don't know when he started that. It was like in 92 or something. And then Ruby, obviously, and the support for Ruby is actually pretty good. It's not bad. And then Octave as well, and that was what interested me was I wanted to support Ruby and Octave with my extension. So, let's look at just a quick little example to gauge kind of where you can gain performance and how much. So, this is a little test I ran. It's 100,000 inserts into a SQLite database and the top two lines is to make a 100,000 element array with the rows you're going to insert and in the middle section here, we open a transaction, prepare an SQL statement and then we loop over our data array and execute the SQL and inject the 100,000 statements. And then here in the C++ extension, I just made a function where you give it the SQL code and you pass in the full array. So, basically, I moved that looping into C++ and that's all I did. And by doing that, the SQLite way took 9.8 seconds and in C++ it took 2.6. So, it was a 3.7x speed up and all I did was move a loop into C++. Now, why did that happen? It's because of the overhead of going from Ruby through the Ruby methods, through the wrapper down in the C++ and back up with all the type conversions and everything. If you pass the whole array in, then that doesn't happen, right? So, small stuff can make a difference when you're in that type interrelation. All right, so, when you're building a SWIG module, kind of what happens? I just wanted to throw this up for a little information. You just run the SWIG command and you tell it, hey, this is going to be C++, not C. Ruby, and you pass it the interface file and it's going to make a C++ file that has the wrapper description and the interface description in there. Compile that into a .o, compile that into a shared library, and then they require, you know, CMC underscore dbi and it'll load it up. So, what does the SWIG interface file look like? Well, it's actually relatively simple. If you want to do simple stuff, it's pretty easy to do that in SWIG. That's one of its positives. So, you just define the module name and then it has some kind of CAD utilities that provide stuff you could write on your own, but they've already written it for common stuff like C++ string type maps to convert C++ strings to Ruby strings, and then the second include is the C++ standard tip with library that has a vector container, and so that has the type map so that you can pass that in and out of C++ functions. And then you just, this include, you're just including the header for the file that you want to make visible. It has the class hierarchy and you want to make visible on C++ so it's just what you wrote. And then this is copied verbatim into the C file and it's where you put stuff that's required to compile the file. And the reason they have two sections is sometimes you have stuff required to compile it that you don't want to make visible in the scripting language. So that's what the two sections are for. All right, so, as I said, it does come with pretty full feature STL support. It has built in type maps for all the STL containers. Those type maps support passing containers in as arguments to functions and returning those as values from functions. And it makes wrapper objects around those to support that and they have rubies interfaces that use the term somewhat loosely. So let's just take vector as an example and if I want to pass vector as an input argument to the function in SWIG, I would add this line to my SWIG interface file and what that's going to do is I'm telling it, hey, I want to use a vector of integers as an argument and I'm going to name that int vector. So in Ruby, the type name is int vector. And then here's the function that you would call and all it does is loop over the vector and pronounce the elements. And then on the Ruby side, you could say something like hey, I want a new int vector, push three ints on there and then pass that to the function and then it would pronounce the elements. So if we take a look at our new int vector in IRB just to see what it looks like, you can create a new one and initialize it with some elements that way and then it's going to return this hieroglyphic looking thing that's a standard vector of int, a basic C++ class so it makes it kind of easy to see what SWIG did in that case. And then you can use it in many ways just like a Ruby array can loop over it and pronounce the elements. You can ask it or you can push a new element on. If you try and push something that's not an int it will raise an exception that it's like a SWIG type error or something so you do know so it enforces that because it really is not a Ruby array. You can ask it how big it is. You can ask it how much memory it's allocated. This is directly from the C++ STL and it will be different typically. And then you can call .join I have no love because it's not really a Ruby array so I have to stick with the basic functionality. So the other thing that you do in SWIG that I want to talk a little bit about is exception entity because you can throw exceptions in C++ and you can throw exceptions in Ruby which would be great if when I threw it in my C++ extension it looked in Ruby just like it came from Ruby and I can handle it the same way. Well, this crazy looking code is what does that and this is copied verbatim out of the SWIG help manual and this particular method works for any scripting language. All you're doing is you start with this one and catch anything derived from the base exception class in C++ and they just set the message and it will show up as a Ruby runtime of exception in the script. So that works great, right? If you put that in, you can be covered and you can catch all your exceptions and that's not bad. But, you know, sometimes you might want to throw different exceptions for different things that go wrong like you might have a SQLite3 statement error or SQL error or database lock or something like that. So to make that happen the solution I came up with was I added another section in here where I catch a base class that I define and then I define a Ruby class that's the name of whatever class I brew. It's a child of runtime error and then I raise it with the what message from the C++ exception. So the C++ code to support that I define my error base class I inherit from the C++ built-in exception class and then I define a foobar error from that and the only thing special about it really the only reason I'm doing that is so that I can set the name of the class that it's going to make a group called C++ stinks and there's no way to get the class name within that class in C++ it's remarkable how difficult they make that name. Anyway, there are some compiler and platform specific ways of getting that but they all give a different answer like if anything changes so it's not the best I could come up. Alright, so why did I go with SWIG? Really the main reason is it's the only one that would let me build an extension for Ruby and for Octave without repeating myself and so it was pretty attractive for that. One of the other advantages is it does let you automate building the interface so in other words the SWIG interface file, once that's set up for the data types that you're going to be using within your app if you go to find a bunch of new methods you don't have to go read this thing you just write the C++ like you know you have to and then you just re-run SWIG and read the file and then new methods get reflected into the Ruby extension automatically and that was the advantage and that's it Any questions about SWIG or hopefully not Rice? Does it have like one of the things I've noticed is when I've got Ruby code called C++ code called Ruby code if I throw an exception to Ruby it will actually skip over those C++ frames I don't know if it uses go to or whatever or something happens that like the structure is never in call and I was wondering if SWIG has some sort of mechanism that you could do like catch and re-throw like in each language boundary to try and make sure that you don't have Yeah, that's a good question Demi, did you use that? I'm not used to SWIG right now so I'm worried that something could help me out but I have to manually make sure that every time there's a boundary Yes, I probably don't know the answer because I never did that I didn't go Ruby to C++ and have that call Ruby I know that SWIG has a lot of so the good thing about SWIG is it's very flexible and the bad thing about SWIG is it's very flexible so once you kind of go off the beaten path kind of get down in there it could be a little quirky of how you do stuff but like this gets put in the wrapper for every method it's like it gets injected so there may well be a way that you can inject something because that's kind of how it works it's like, hey, when you see this happen I need to do this type conversion use this code or when every wrapper injects this code so I don't know for sure but when it does have white a lot of options like that So you handle the construction I mean SWIG handles the construction the construction of the objects or Ruby does that? SWIG writes the C code Ruby C code that constructs the class hierarchy on the Ruby side so if you go look at the bottom of the SWIG file they don't have a bunch of defined class and then defined all the methods and everything and then above that it has all the C wrapper code to do the type conversion but yes, it will build all of that automatically Okay, but it doesn't do the instantiation that's Ruby still and Ruby garbage collector it has methods that let you affect how you want to handle garbage collection like you can register objects in SWIG with the garbage collector and then it knows to call the constructor or you can tell it I mean you just don't register because you don't want it to do anything but you do have hooks to do that I haven't done a lot of that but I think they are Okay So does it allocate does it allocate to the C++ objects on the stack or can you control that? Yeah, so you mean like when I do when you say inVector.U where does that does it call now like or does it call new I guess this is kind of what you were talking about it does, it does call the C++ constructor yes, it does do that but when we do that it will be registered with garbage collection so when it goes out of scope and Ruby it will call the constructor because I'm thinking this would be great for a game if you have just a huge array of vectors that you have to want to process in C++ you have to allocate a lot of memory and then I guess in C++ then you would deconstruct them all or whatever you need to do I guess Yeah, well that's why it has the wrapper around the InVector so you don't have to you don't have to build the array in Ruby and then copy it in C++ that's a new strategy you're never going to get any speed up that way so yeah, if you do it kind of a swig way you won't make a new copy of it in C++ but you'll be stuck using the STL vector you won't have the full Ruby stuff but if you're just building up an array that's not too bad it does have some stuff to keep from happening that's the other advantage of it over something like ffi because ffi will have more overhead because it has more steps in that wrapper process it doesn't necessarily make copies of stuff but that's why it does have more overhead in traditional C++ What is it supposed to do? I guess about Yeah, we got time for that Anybody has one? Alright, cool. Thank you


Good boy, Max. Oh, what a good girl you are. For Marines assigned to the Wounded Warrior Battalion, Friday is a day of healing. They just bring a lot of positive energy around. I believe it helps you heal and helps you get back to living a normal life, I suppose. For the past two months, volunteers with Hawaii Fido, an organization that provides service dogs to those in need, have been bringing pet therapy dogs to the Marine Corps base here at Kaneohe Bay to work with Marines assigned to the Wounded Warrior Battalion West. It's the unconditional love of the dog that makes this all possible.  They're just there for that touch, and they give that back. Max. Max. Come on. Corporal Rafael Cervantes is one of the Wounded Warriors here. Cervantes, who's recovering from an IED blast, says he looks forward to the weekly visits with the dogs. Lately, I just, I don't know, I just feel, feel like I'm not here. And being around these dogs is just, gets my mind out of what I feel and my pain in my leg. I have a lot of pain in my leg, so just hanging out with these guys is, I think it's an amazing thing for us. Reaching Marines to care for and train service dogs is an important part of the Hawaii Fido program. Corporal Daniel Carter says there's no question that adopting his lab fin has helped his recovery. I've had a huge success in going from just depressed and never leaving my room to always being out, and I'm never in my room now. Wounded Warriors on the road to recovery with a little help from man's best friend. At Marine Corps Base Hawaii, Kaneohe Bay, Army Staff Sergeant Brandon Roth reporting.