Hello everyone, this is Amit Dan and on this channel you'll find financial travel and more videos. If you like what you see, please do the thumbs up and consider subscribing. Thank you. Hello everyone, this is Amit Dan of amitdan.com. Today, I'll talk about the Bream World Elite MasterCard. Bream Financial has created a lot of buzz on the Canadian credit card market because the credit cards they are offering are packed with features which we haven't seen in Canada before and although the cards haven't been launched yet or they have not been sent to the customers yet, there's a lot of rumors and buzz on the market and even before starting to send out the credit cards, it has come to my attention that the Bream World Elite MasterCard which used to have $120 annual fee is going to increase their annual fee rate to $200. So this is what I saw on the Bream Financial website. So I'm going to take you to the Bream Financial website where I'll show you that it shows right now that the annual fee is $200 instead of $120. And I'll talk about a few more stuff and then I'll call you, I'll call Bream Financial and I'll ask them whether, you know, they're really increasing the fee from $120 to $200 or this is just a type or some sort of mistake because it makes no sense to pay $200 for just to have this Bream World Elite MasterCard. Yes, the card has lots of features. For example, no foreign currency fee, Boingo Global, Wi-Fi access and launch key launch, annual launch membership, but not free passes. However, $120 seems to be reasonable annual fee, but not $200. So let's call Bream and we'll find out what they have to say. And then I'll give you some more insights on $200 annual fee for this credit card. Thank you. Hello everyone. So we're looking at Bream website and yes, we know all know that Bream credit cards come with lots of features. For example, no foreign currency fee, global Wi-Fi, and added security. However, the $120 annual fee for the Bream World Elite MasterCard is very justifiable. And it's definitely in line with other World Elite MasterCard because you can have most of the Canadian premium credit cards are actually $120 to $150 annual fee. And what I just noticed that on Bream website, the annual fee for the Bream World Elite MasterCard, which is right here. Let me just zoom in a little bit. Okay, so the Bream World Elite MasterCard used to have $120 annual fee and when you now go to the Bream World Elite MasterCard section, so let's hit comparison. And then you can see right here that it's $199 now. It's no longer $120. So the Bream World Credit Card is $99 and Bream Free Version is $0. However, the World Elite Version went up from $120 to $199 and looks like the features are still the same. I don't see any like, you know, additional features they have increased or they're giving anything extra for this $80 increase from $120 to $200. So what I'll do, let me call Bream and confirm with them that this is not a type or anything and this is really is going to be $200 from now on. And then after confirming, I'll give you some more insights. Thank you. Okay, so we are calling Bream and let's take a look if anyone picks up the phone. Good, thank you. Yes, I'm just calling to double-check something with the Bream World Elite MasterCard. Yes, so in the past, I believe just probably last week when I was looking on your website, it shows that, you know, it showed that the NOLF is $120. But I'm looking at it right now and it shows that $199. Is this a type or this is real? I'm not sure, but it could be like February or March. The fight back then will be parted in. And the fee that it was before, which was $120. Okay. Yeah. Okay. So it's going to be $199 from now on. Are there like any benefits change or anything? Well, the detail has changed to $199. Okay. And also. Oh, okay. But you haven't changed the Bream World, right? It's still $99. Oh, okay. I just like to have your insights on something. So they're like, you know, BMO World Elite MasterCard, which has $150 annual fee and it gives four free launch passes.  So the Bream has $200, you know, annual fee doesn't have any free passes, but it just gives you the annual membership via launch key, launch access program. So do you think people are really going to, you know, get this card for $200? Okay. You know, like five? Right. Well, like, sure. Okay. Actually I compared like, you know, both of all three and looks like actually BMO World Elite has even more coverage than Bream World Elite. And so is the Scotia Passport Visa. So I'm just wondering, like, you know, is it, could it be the higher end office coming from the free global Wi-Fi access? Oh, so I'm just saying that, you know, I compared the insurance benefits between your card and BMO World Elite and visa, Scotia Passport Visa, they have more coverage than Bream. But I'm just wondering, could your higher fee, as a result of the free global Wi-Fi access, which you're giving for free, the Scotia Passport doesn't charge, it has zero foreign exchange fee as well. No, no, I understand. I understand. I'm just like, you know, thinking that what is the justification of charging $200 when people have like, you know, more options paying less and getting more from other institutions.  And most, most other compared cars, which you can, like, you know, put in the same label, even giving more, they have like $120, $250. So that's why I just, I just wanted to, you know, let you guys know. Our agency is currently still working on those, you know. Yes. I mean, like, I'm sure if you did look at our website, you have a transfer website. Yeah, I saw that. Yeah, like based on PIT, that's a very, yeah. Just one last thing. I'm just thinking that, you know, after one year, I'm going to be switching to the regular Bream with the $0 NO fee.   So I'm going to still get that for $0. So for me, it sounds like the best deal, like, you know, probably in Canada, paying zero and getting free global Wi-Fi and foreign transaction fee. Actually, you're not giving free passes. You're just giving the annual membership, right? So the, it's not free access. You're just giving the annual membership, but they're not free passes. Because if you read the, exactly. Yes, correct. That is correct. But like, you know, other credit card, for example, BMO World Delete, gives four free passes, which has $150 annual fee and Scotia passport visa infinite. $140 annual fee gives six passes. So, yeah. So you're going to get a lot more, paying a lot less from those cards, you know? So I thought I'd just let you guys know. Oh, if I must point out, what? Yeah, like, um, okay. If you, if you bought a format. Oh, okay. My points, you know, the points I get from BMO World Delete, they're going to be still okay if I switch to Bream regular, right? Let's say I accumulated some points, right? From using a Bream World Delete. And once I switch to Bream regular, still I will have the same points, right? It's not going to go away.  Yeah. With those points, maybe. Exactly, exactly. Yeah. Yes. Okay, okay. Then it makes sense, you know? Thanks for confirming that. Sure. This is Ahmed Dunn. And actually, I did apply for a card, which I haven't received yet. Yes. Okay. As a fully launched, this won't get an email?  Okay. Oh, okay. So if I get the approval next week, probably I'll get the Cardoic after. Okay. Okay. Sounds good. Okay. Yeah. I'm like, how bad? Yep. Thank you for answering all the questions. All right. My pleasure. Thank you for contacting Group Financial and looking forward to having you as a customer, so. And I'm sorry. I missed your name. My name is Tim. Tim? Oh, thanks. E-M-I-D-E. I'm sorry. T-E-M-I-D-E. Okay. Yeah, it's immediate. So is Tim or Timid? I'm afraid now that you can call me Tim. Oh, okay. All right. Thank you, Tim. Okay. Okay. Thanks, E-2. Bye. Okay. So you just heard the conversation. The $199 annual fee is not a typo. This is a real thing. And the unfortunate thing here is that, you know, they're not giving you any free launch passes. You, as you heard, the conversation that, you know, if you have BMO World Elite, which pays $150, which has $150 annual fee, then you get free four passes, Scotia Passport Visa Infinite Card, $140 annual fee, you get six free launch passes. So I don't know, I don't understand why someone would want this card, BMO World Elite, which you have to pay $199 annual fee, and you get no free passes. You just get the annual membership fee for free. So the other thing I would like to mention that the customer service guy who is, you know, actually is a very good rep, and he's talking about all the benefits and everything. But those cars have the same benefits, and even they actually have more benefits than the Bream in some cases for travel insurance. So the benefits are in line or they're comparable, and even you're going to get more in some of them with the Scotia Passport Visa Infinite or BMO World Elite MasterCard. The only thing those cars do not offer, which Bream World Elite MasterCard is offering, is the launch key, sorry, not the launch key, is the, let me just take a look where did it go. The free global Wi-Fi, which is right here. So basically you get a fixed, some fixed hours free global Wi-Fi access every month, and you can use it anywhere in the world. So this feature actually is not provided by any other cars or any of those cars I just mentioned. So this is something really unique, and it might come in handy if you travel a lot or even on the plane you can use it. Some planes have Wi-Fi if you are a member of the global Wi-Fi. So this is a good feature, but the interesting thing is you can get this feature for free if you have Bream the basic card, which has a $0 annual fee. So I'm not going to keep this card beyond its first year, so I'm going to keep this card, and then after that I'm going to switch it to the Bream regular, which has zero annual fee, and still I'll be getting the foreign transaction fee of zero percent, and still I'm going to be getting free global Wi-Fi for free, which seems to be a best deal ever. No one is going to give you these for free, and for the other insurance features and lounge access features, I don't need those because I have my Scotia passport visa infinite card, and I have BMO order with MasterCard as well, and I do have reviews on those as well on my channel. You can see that later on. So that's my thought on this. I think this is a very bad decision from the Bream, even they increase the annual fee, even before cars are being handed out to clients. So from $120 to $200, that's a huge jump, and I don't see any justification for this increase because the benefits are not increasing, and you can have much more benefits from these other cars I just mentioned. So that's all for now. If you like what you see, please give it a thumbs up and consider subscribing, and on this channel I do financial travel and other videos. And one very important thing I'd like to mention you that this is the only channel where all the videos, all the reviews are non-aviliated. I do not make money of these credit card companies, and if you're reading any other reviews or anything online, most likely they're working for the credit card companies. They're offering you a link by which if we apply, they make money so they have their interest not to give you the right information. But here I do not do that. These are non-aviliated, unbiased, and honest opinion. So what you're receiving is nothing, there's no money behind it, and I'm actually working for you. I'm not working for any credit card companies. So I hope you like it, and please subscribe. I'll see you shortly. Thank you.


Good afternoon, everyone, and welcome to our talk, Parts and Storage. This is a case study of moving flipkart.com to K8S on DMT. A brief introduction about us. I'm Neeraj, and I work as a software engineer in the cloud platform team at Flipkart. My co-presenter is Livingston, who is my teammate at Flipkart. Let's briefly touch upon today's agenda. We'll talk about what is Flipkart and how is it set up in terms of its IES infrastructure. Then we'll talk about our journey of migrating flipkart.com to Kubernetes. We touch upon the reasons we wanted to learn Kubernetes on bare metal. We finally share our key learnings from this exercise, and we'll take up any questions at the end. So what is Flipkart? Flipkart is India's largest e-commerce company. During our annual mega sale event, Big Billion Day last year, we received 600k QPS on our external load balancer, and overall, 3.8 million QPS on our internal load balancer whips. This setup is powered by 20,000 servers deployed across two private data centers and a few services running in GCP. We have a whopping 1700 microservices which are maintained by 1500 developers. So let's start at the fundamental question. Why would a company like Flipkart want to move its platform stack to Kubernetes? Firstly, for immutable and repeatable deployments. In Flipkart, the deployment model across services was fragmented and mostly procedure, automated via Ansible or similar automation frameworks. The problem with this is that bringing up a new environment containing all those 1700 microservices that we talked about was incredibly hard and time consuming. Cross-platform projects would often suffer from poor integration testing because of a lack of isolated integration testing environment. This would in turn slow down the project delivery. Secondly, we wanted to standardize our deployment model and use infrastructure as core declarations to manage them. In a way, Kubernetes API provides a robust declarative deployment model. What this enables is that now the platform teams can come in and automate and monetize the recipes for different runtimes and frameworks because underneath, everyone will deploy to the same uniform declarative API. Thirdly, for auto-skilling. We test upon how large the spikes on our BPD events are. These are about eight times of what our BAU dates peaks are. This allows us an opportunity where workloads can scale down from non-peak hours and burst into public clouds for handling the peaks. If all the workloads could auto-scale, it would mean about seven times of theoretical resource savings of Flipkart. Containers provide faster spin-up times than virtual machines in our tests, making the move to auto-skilling more feasible. Next, as I mentioned earlier, we want to utilize public clouds for busting. But for application teams migrating their workloads to a new cloud and a new deployment model could be a huge over. Kubernetes API being cloud-eplastic allows these workloads to seamlessly work across private and public cloud with minimal changes. Lastly, our custom virtual machine-based infrastructure stack was robust. But lacking in features that developers wanted, that is, auto-skilling, auto-healing, spin-up times being slow. We came to a stark realization that we as a small team of 50 developers cannot keep pace with the demands if we continue to run a proprietary close source stack. We instead decided to leverage the power of the CNCF community to modernize our IES stack. Let's discuss about our CNC model a bit. I think it's fair to say that despite its huge benefits, Kubernetes is hard. And Kubernetes cluster management is extremely challenging for the uninitiated. We decided that it would make sense to have this cluster management responsibility taken by a single cloud team that would manage the uptime and scalability of all the Kubernetes clusters. App teams are then provided namespaces and resource quotas in the clusters where they can deploy their workloads. This means that not all of the 150 odd teams have to learn how to manage a Kubernetes cluster. In Flipkart, we have six products in clusters spread across three regions and two cloud products, Private and GCP. The largest cluster runs 3,000 nodes, 1,500 microservices and handles more than 30,000 points. One question we get asked is why did we choose to host small number of large clusters versus a large number of small clusters? Firstly, in the private data centers, we are dealing with fixed static size servers. Having larger clusters allows for more variety in pod sizes, which in turn means we waste less resources due to bin packing wastage. Secondly, large clusters allow complementary workloads to upscale and downscale and allow transfer of capacity between them more fluidly. I know this is also possible using cluster auto scaling, but node provisioning is and will always be slower than the scale at which auto scaling needs to happen. This would also get magnified with slower bare metal provisioning. It also means a larger chunks of freed capacity in the cluster that can now be used by the workloads. Larger clusters also mean lesser control plane management overhead in terms of the number of master's nodes, the Prometheus node pods, the Grafana and other control plane tools that have deployed clusters. On the flip side, managing large clusters is a lot harder. We did struggle with APS server memory spikes initially. But with careful understanding of APS server flows, choosing the right resource limit for each control plane pod and doing the APS server priority and fairness photos, we have managed to make this fairly stable. As of today, more than 90% of our stateless services are running on Kubernetes. We ran BBG 21 with these services on Kubernetes. Stateful services are provided by managed database as a service offering provided by our platform teams, which are also being built from the grounds up using CNCF projects like TIDV and Apache. The migration of other stateful stacks is ongoing as we invest heavily in building and hardening database operators. So let's talk about what are the challenges faced during this migration. Firstly, as we test upon, managing the stability of the control plane is very hard. Secondly, when migrations carried out at such a large scale, both human and microservices, there's a lot more entropy than what we would have assumed for a simple access. We had to face issues where our teams would come and say, hey, my pods are latent than my virtual machines, and I don't know why. Can you help? We would find that there were frequent JVM argument mismatches between the two setups. We should be using older versions of Java, which would not have continuous support. There will be duplicate versions of jobs in the class path causing functional and performance issues. For example, logging being done as synchronously in the virtual machines versus synchronously in the pods. Next, we were in a stage of moving our virtual machine fleet from demdine to demdine. Hence, most of our workloads were running older 4.x cuddles. But for Kubernetes, we chose to learn newer 5.10 kernel, which was also required by ceiling. The Spectre and Meltdown and other vulnerability fixes that were pushed between these kernel versions have degraded the performance for pods vis-a-vis VMs. We ran benchmarks with the mitigations turned off and observed an improvement of 5% to 10% in our synthetic benchmark tests. Moving on, there will always be very few servers in such a large fleet which have CPU frequencies that are being throttled either because of overheating, BIOS misconfigurations, post maintenance, and so on. This manifests to users as one of the instances in their services having higher tail ratings. We have to also delete and replace these instances. In VMWord, this was less visible to users as VMCs smaller churn rate and hence over a period of time of users deleting these virtual machines. We reach a sort of stable configuration where virtual machines are less concerned with tail ratings sit on these slow servers. In Kubernetes, because of higher pod churn rate, the same services would frequently keep on getting scheduled on these nodes and one-time deletion would not work. We also observed issues where teams would benchmark and qualify their services only to see them degrade during central LFR runs where all the services are being scaled to simultaneously. In such cases, most cores on the underlying servers would spike causing Intel's turbo boost to switch to all-core turbo of 6.6 GHz from 3.1 GHz for single-core turbo frequencies. All the above performance issues could be attributed to external factors but we had some services in our user path which used to run on LX on bare metal. These services saw significant puff degradation simply because on LX they were able to avoid the virtualization overhead. This forms the motivation for the next key mousephone in our Kubernetes journey, that is running Kubernetes on bare metals. Why did we start running Kubernetes on virtual machines in the first place? We had a mature virtual machine provision stack and it made sense to start running Kubernetes on virtual machines to get a quick start on our Kubernetes journey. Also, we didn't want to introduce the virtual isolation stack within our Kubernetes stack. We wanted to continue with our matured isolation stack. Moreover, we always had control over our Kubernetes clusters and we decided that we could always switch the nodes to bare metals in the future without involving the user teams. So what were the considerations for running Kubernetes on bare metal? Firstly, as we touched upon, workloads which were migrating from LX demanded bare metal performance. We were able to migrate them to Kubernetes on VM by provisioning additional compute capacity. But this always seemed like a lot of waste. We needed to reclaim it. We also observed that tail latencies and throughput improved for all the workloads when they were running on bare metal. We wanted to reduce the overhead cost because of the cores that are reserved for the virtualization stack. On the security front, we argued that since we were running only one virtual machine per server, the pods running... if they ran directly on the bare metal was not any less secure than the model in which all of the pods were sharing the same guest kernel and so on. As a bonus, some of the control plane packages to demo sets would make the deployment lifecycle easier to maintain. Next, taking you through the life details of our bare metal design and journey is Livingston. Over to you, Livingston. Thank you, Neeraj. Good evening, folks. This is Livingston from Flipkart's cloud platform team here to walk you through the rest of the presentation. Let's quickly take a look at how the virtual machine stack is set up on a single server in Flipkart's data center. KVM is a kernel-based virtual machine that provides Linux hypervisor capabilities. KEMU is a virtual machine monitor which works with KVM and provides different types of devices and hardware for the guest machine through emulation. Libvert is a user space application that allows management of virtual machines. Let's discuss about the networking setup for virtual machines, which is powered by VhostNet. There are two primary components in VhostNet architecture. VertioNet, which is a virtual Ethernet card and runs in the guest kernel space. VhostNet, a kernel module that runs in the host kernel space and implements the Vhost protocol required for VertioNet working. Apart from these, there is a Linux kernel bridge which is used to forward packets from the VhostNet module to other guests on the same server or on other servers. Our in-house VPC stack has a control plane that allows us to define isolation policies for different VPCs. There is a data plane component of this VPC stack that runs on the host server and programs corresponding IP tables rules on the respective network interfaces. Like Neeraj already discussed, we decided to run Kubernetes on VMs instead of bare metal for a couple of reasons. One was that we were already having a mature VPC stack for configuring network isolation rules and we didn't want to re-architect that as part of the Kubernetes migration. Secondly, VMs are faster to provision. Lastly, our team structure didn't give us control over the roadmap of the isolation stack and bare metal provisioning when we started the Kubernetes project. So instead, we chose to run on large VMs that were as big as the entire bare metal server. On the bare metal, four cores are reserved for running host OS along with the VPC data plane, virtualization control plane and other agents that detect hardware failures. On the guest, two cores are reserved for the guest OS, Cubelet, container D. Another 2.6 cores are reserved for running demon sets. One of them is Cillium that provides us EBPF-based network stack. We primarily used it for bandwidth control, although it has capabilities for providing network qualities, we continue to use in-house VPC stack that was built and runs on the host OS. Some of the other demon sets are the logic agent, node exporter and node problem detector. The remaining 87.4 cores are used to host user workloads. Now that we are already on Kubernetes powered by VMs and the organization has seen the benefits KITUS as a platform provides in reducing ops overhead as well as better deployment models, we decided to move Kubernetes nodes to bare metal. In this model, two cores are reserved for the host OS. Another 2.6 cores are reserved for platform-owned workloads like Cillium, logging agent, node exporter and node problem detector. When we compare running KITUS on VM with running KITUS on VM, we will see some of the redundant components were removed. Instead of having two separate components for network policies, we have only Cillium now. The virtualization control plane that allowed the central VM orchestrator to spin up VMs is no longer needed. The agents responsible for identifying hardware failures on the host OS are now replaced with even sets like node problem detector. From the removal of these redundant components, we were able to save 4 cores per node that translates to almost 40,000 cores across our two private data centers. Apart from the savings that we saw earlier, we also wanted to quantify the throughput and latency improvements by running aero spike YCSB benchmarks. In this session, we will talk about the 100% retest. The CPU that was used for this test is the older generation Haswell server that is running in one of our older data centers. The CPU is Intel Xeon E5 2670 and the NIC is Intel 82599 10G gigabit dual port NIC. The host OS is Debian 10 kernel 4.19 and the guest OS is Debian 10 kernel 5.10. On the Kubernetes bare metal node, the OS is Debian 11 kernel 5.10. The parts that we used for the test were 16 cores and 16 GB memory. Now, as you can see, the throughput and the mean latency was measured for three different types of tests. In addition to the VhostNet networking architecture that we use in production, we also benchmarked another networking setup where the SRIUVVF is configured as a PCI pass-through device in Keymoom. In this architecture, the packets from the guest kernel go directly to the NIC and not via the host kernel. We observed 80% increase in throughput between the VhostNet architecture and running Kubernetes on bare metal. We also saw a 45% improvement in the mean latencies. When it comes to the 95th and 99th percentile latencies, we observed approximately 50% improvement. Now, let's move on to some real-world benchmarks that we have done with a couple of our large user path systems. Mappy, which is short for mobile API, serves requests to all frontends by aggregating data from a large number of microservices within Flipkart. By frontends, we refer to different channels on which Flipkart can be accessed, like Android app, iOS app, the mobile site, as well as the desktop website. Mappy calls close to 200 microservices. The benchmark was run on a single pod with the SLA of 95th percentile being below 1 second. The CPU utilization was about 90% in both cases. With these constraints, we saw 40% increase in throughput for Mappy workloads. Now, let's move to another service called Athena. Athena is a microservice that serves product serviceability data for products available on Flipkart.com. Qualifying Flipkart.com scale is generally done through centrally coordinated NFRs. The data shown in this slide is from a couple of such NFRs. Athena runs a total of 250 pods with 16 cores and 35 GB each. In this test, we have compared data where the throughput is around 30K. With that, we were able to see approximately 60% improvement in both mean as well as the tail latency. As we have seen from the previous slides, there has been throughput and latency improvement in both synthetic and application benchmarks. During the Aerospike YCSB benchmarks for PCI Paththrough VM, we noticed that the MPStack command for the host CPUs shows utilization as a combination of guest percentage and system percentage. The guest percentage seen on the host matched the overall CPU utilization seen inside the virtual machine. The virtualization overhead is not the same for all applications and is generally higher for applications that are more IO intensive than those that are more CPU bound like inferencing off machine learning models. Eliminating the 20% CPU spent for virtualization by the hypervisor would effectively help improve peak throughput of a single part. This in turn would translate to reduction of the deployment's replica count effectively giving core savings. In this example, consider an application that has a peak per part throughput of X and having 10 parts. It achieves this using 80% of the CPU assigned to it as the remaining 20% is used by the hypervisor. It can serve an overall peak throughput of 10X. Moving to Kubernetes on bare metal would increase the throughput by approximately 25% and result in a peak per part throughput of 1.25X. So for the same application to have a peak throughput of 10X, it would require only 8 parts now. Let's summarize the overall projected savings that Flipkart will see by moving to Kubernetes on bare metal. This is a ballpark figure as different applications have different virtualization overhead which have resided at approximately 20%. Projected core savings from removing virtualization is estimated at 40,000 cores across two data centers. The projected core savings from improved throughput per application part is estimated to be around 100K cores across two data centers. Hence the total core savings would sum up to approximately 140K cores which is almost 30% of the total Kubernetes cores. During our journey of migrating to bare metal servers, we have learned a couple of things. ARFS is a feature that ensures incoming packets are processed by the same course where the application is running. Unfortunately, this feature breaks when we run applications that use high number of threads. We have ascertained this behavior in both Intel 82599 and Intel E8106. Another important learning is that bare metal provisioning is an often overlooked requirement as they are not exercised very frequently. But if we want to have our infrastructure provision declaratively using something like cluster API, then we need this to be more robust and faster. One open source option that we've seen till now is the Tinkerbell project. With the success of migrating a couple of large user path microservices to bare metal Kubernetes nodes, we are looking forward to expanding this project for other types of workloads like stateful and Istio enabled workloads. Another revenue for improvement will be faster and consistent provisioning of bare metal nodes. Cluster API is a project that allows declarative management of Kubernetes clusters. Writing a cluster API provider for Flipkart's IAE stack would help us manage our Kubernetes clusters declaratively. The final point is that even though we have shared some benchmark results, we would want to publish a white paper on the benefits and cost savings of moving real world applications from Kubernetes on VM to Kubernetes on bare metal nodes. Thank you everyone for letting us share the experience of migrating a large enterprise like Flipkart from virtual machines to a container such as a multi-stater like Kubernetes. Thank you.


Thank you so much for honoring us with your presence here this week, Sidelia, and thanks very much to Trevor Stratton at the Canadian Aboriginal AIDS Network for introducing us to Sidelia and making us friends over the last number of months. On behalf of our team at Harm Reduction International, I'd like to welcome you all to this 25th International Harm Reduction Conference. I'd like to extend a special welcome to all the representatives of the local, national, regional and international networks of people who use drugs and sex workers who are here with us this week. I would like to extend a welcome to Minister Lucie Charlebois from the Government of Quebec and also the Canadian Minister of Health, Jane Philpot. Thank them for joining us today at our conference. I'd like to welcome the team from our conference partner, AIDQ, who've helped us so much in organizing this event, and a special thanks to the other key local partners who've helped us out so much. Cactus, the Quebec Alliance of People Who Use Drugs and the Quebec Ministry of Health. And most of all, I'd like to thank you all of you delegates. I know many of you have traveled great distances, often with great difficulty to make it here to this event today. In 1990 in Liverpool, 400 people came together for the very first International Harm Reduction Conference. This week at our 25th event, we'll welcome more than a thousand people from over 70 countries who'll come together to continue to build the global harm reduction movement. On the occasion of this 25th anniversary event, I'd like to pay a special tribute to Harm Reduction International's founder, Pat O'Hare, who's been with us through every one of those conferences along the way. And I know, Pat, as happy as I am that this is the very first time, I think, in the history of the conference that it's actually sold out. The last time we came together was in October 2015 in Kuala Lumpur, and I know that some of our partners from the Malaysian AIDS Council and the Malaysian Ministry of Health are joining us here again this week, and you're very welcome. Could you show the photo, please? The photo behind me was taken during that conference in Kuala Lumpur, and I think it draws an important connection between that conference and this one. Because the Kuala Lumpur conference fell on the date of the last Canadian federal election. Some of you might remember that on election day, all the Canadian delegates were glued to our phones and our laptops constantly refreshing to see the votes coming up, desperately hoping that we would finally see the defeat of the Conservative government of then Prime Minister Stephen Harper. Now, the Harper government was an obsessive and cruel opponent of harm reduction. You probably remember their long war against insight, Canada's first safe-injecting facility, trying to shut it down and in the process denying life-saving harm reduction services to thousands of people living in the downtown Lower East Side of Vancouver. It was a government that epitomized ideologically driven rather than evidence-driven policies. It worked to suppress scientific research that might result in undermining its agenda, even banning in some cases government scientists from speaking to the media. There are particularly active, suppressing environmental and climate change science, whose evidence might further hinder exploitation of mining and oil interests, particularly on indigenous territories. The Harper government also waged war against civil society organizations in this country. NGOs were closed down almost overnight by having their funding withdrawn. Many others were subjected to politically motivated audits and financial investigations designed to destroy them. Environmental groups, women's groups, international development groups, human rights groups, even our dear friends at the Canadian HIV AIDS Legal Network were subjected to such financial attacks for daring to speak out against the government's reactionary agenda. Now, there have been very few times in my life where I felt I had been part of a poetic moment, but that day in KL was one of them. Because the final election results actually came in at the very moment that our comrade Liz Evans was on stage speaking in the plenary session. Of course, Liz was one of the founding directors of INSIGHT, and it helped lead the successful defensive INSIGHT in the Canadian court system. She and other INSIGHT leaders had been tarred by the right-wing press as part of a campaign to shut down INSIGHT. And that morning in Kuala Lumpur in front of hundreds of harm reductionists from around the world, Liz got to announce from the stage the defeat of the odious Harper regime. And the crowd erupted, not because they were all Canadians, far from it. But as harm reductionists internationally, we knew that that defeat for Stephen Harper's government was a victory for harm reduction. Not just here in Canada, but also in the international arena where the government had played a fairly insidious role. Now, Liz's announcement of the defeat of the Harper government was a very special moment, and later that day all the Canadians at the conference gathered together to take this picture. We borrowed a giant syringe that belonged to the Malaysian AIDS Council and sent it around the world on social media. Many of you in that picture are here today. Now, the Harper years were difficult ones for many activists and people and communities here in Canada. And less than two years after the defeat of that government, we see how much progress on harm reduction issues has been made. From advances in safe injecting sites to advances around prescription heroin to even pending legislation on cannabis reform. There's been a sea change in many aspects of the government's position on harm reduction at home and its engagement in UN fora. And there are lessons here, because the reason for that progress is not simply a changing government, although that's obviously important. It's because community groups, drug user and sex worker networks, civil society organizations, researchers, lawyers, journalists and many, many others fought the Harper government tooth and nail over those ten years. Defending our space and our principles in the media, in the courts and in the streets. Defending our space in the public discourse and indeed expanding that space through the strength of our arguments and the righteousness of our cause. So because of that work, when the last government fell, the political space existed for a new government with new ideas to move into that space and begin to initiate some of the policy change we wanted to see. Of course, even here in Canada, despite progress, we want to see more. We want to see the decriminalization of possession of personal use for all drugs. We want to see needle and syringe exchange programs implemented in prisons. We want to see the legal and administrative barriers removed that inhibit provinces and municipalities from open safe injecting sites. And of course, we will continue to advocate on those and many other crucial issues here in Canada. But the lesson of the last 18 months is an important one for all of us who live and work in countries where right-wing governments use the war on drugs as a tool to consolidate power. From executions of drug offenders in Indonesia over the last couple of years, to the horrific crimes currently being perpetrated by the Duterte regime in the Philippines, to the ongoing HIV and overdose epidemics in Russia driven by deliberate government policy and neglect, government attacks against progressive and international Central European University in Hungary, to that egomaniacal game show host who currently sits in the White House peddling racism and xenophobia, reigniting the war on drugs and glibly stripping healthcare away from millions of people. As we gather in Montreal this week, we can look back and draw some strength from the activism that our Canadian colleagues managed during those difficult years here, as it shows clearly the crucial need for opposition to these types of policies and the need to defend the harm reduction in human rights cause and help to create the space for policy change. We all know too well that around the world the war on drugs remains a politically expedient and easy tool to deflect public's attention from wider issues. It creates easy enemies in the public eye. And we know that as harm reductionists and drug policy reformers of networks of people who use drugs, our job is to challenge the war on drugs at every turn and the countless preventable deaths that result from it. The message of the international drug control regime sends to millions of people around the world is as stark as it is clear.  The harm reduction philosophy stands in complete opposition to that status quo.  And more importantly, it says that we want people to live. We believe in the inherent dignity and rights of all people. And we don't accept that abstinence from drug use is a prerequisite to the existence of dignity in human rights. The theme of this year's conference is at the heart of the response. And to me there's one thing more than any other that lies at the heart of our movement. And that is that fundamental belief in the dignity and rights of all people. And that's so important because around the world we see the rights and dignity of people being under renewed attack. Attacks that include but are certainly not limited to those perpetrated in the name of the drug war. In these times solidarity has to be more than a slogan. And we have to help each other, listen and learn from each other, support each other and defend each other. Because in defending each other we defend ourselves. I'm extremely proud to be part of our global harm reduction movement. Because despite our setbacks and our struggles we know that we're on the right side of history. I've said before that the harm reduction movement is like a big family. Sometimes we squabble and we argue. Sometimes we don't see each other or talk to each other for long periods of time. But every so often we come together at events like this, whether they're national or international. And to me they feel a bit like a family reunion. We reconnect, we embrace, we celebrate, we talk about the work ahead. So again I welcome all of you to this very special 25th International Harm Reduction Family Reunion. I look forward to reconnecting with all of you, celebrating our movement and helping to build our solidarity as we move forward in often difficult times. I'd like to thank you very much and I'd like to introduce our partner Lisa Massakot to the director of AIDQ here in Montreal. Thank you so much.


Hey guys, my name is Sean O'Cairns and welcome to the backstage portion of your 24 hour broadcast.  Using the hashtag DCUTV24, I want you guys to send us in anything. Ideas for videos, pranks, jokes, whatever. Oh, hello. Send us in whatever you want. Okay, it'll be awesome. Do it.


hold it on on top of the bushes for quite a while okay Papa's in charge of dinner tonight Papa's in charge of dinner tonight aka somebody brought us food and I have to heat it up thank you Rosemary and John for the dinner it looks amazing so I'm in the process here trying to figure out how to open this thing so we'll figure that out at some point and there's a block party naturally happening out on the patio we did it we ate we conquered the soup what was it called what kind of soup a white chili with homemade bread get my bread my goodness diapers I'm telling you practical stuff you can use diapers and wipes blankets are nice clothes are nice food is great but diapers that is the money shot and they're number ones yeah that's perfect which is the next step we have enough newborn thank you Becky and John sometimes you just got to let it go just gotta let it roll and you just gotta pay no attention to what lies below say see you tomorrow


So what does N do in VIM? Well, it takes you to the next result for a in-buffer text search. So I guess first we're gonna have to figure out how to search. Welcome to day N on VIM Alphabet, a short series where we cover VIM A to Z. Today we're talking about N and N takes you to the next result when you are searching for a piece of text in VIM. Now before you can use N, you need to know how to do a text search inside of a buffer. And for that, it's pretty easy. You just do forward slash, you hit forward slash and you type anything that you want to find. I will type NUNC because that is a word and hit enter. That didn't work because it's an exact search. So I'm gonna hit slash again and do a capital NUNC, enter, and it takes me to that word. Now I can do this for any word if I hit forward slash and I'm met. It's gonna take me to that word. Now that's just how you search. So you can search for that. But the question is what does N do? Well N will take you to the next result. So there's that word duplicated because I have this pat paragraph just copy and pasted two times. So if I hit N now that I have completed a search, it will take me to the next appearance of that word. I can hit it again and it'll take me to the next one that shows up. Now if you want to move backwards, well you just hit the capital N. Capital N is going to do the reverse, it's going to do a reverse search, a reverse repeat of your search. And that's pretty easy. So if you need some help with N, you can just look at it here. There are also other types of searches that you can do as evidenced by this question mark. And I will just leave that as an exercise for you. So N will repeat your forward slash or question mark searches. If you have any remaining questions or comments, feel free to throw those in the comments. I will put a link to the playlist as well as the next video. Thank you for checking this out. Tomorrow we will be covering O.