We just made these super trendy high-profit laser engraved hair clips, and we'll show you how we did it right now What is up a welcome back do you like to do it build it or make it so do we we have a new video each week this week I'm getting all up in your hair This week we're working on our smalls if you joined our patreon zoom call last month You know we talked about adding small-dollar items to your craft booth because we're joining a new pop-up tabletop Craft booth, and we need smaller items. We don't have those currently in our booth We use our standing displays and only bring our door rounds But we wanted to start adding some small items because small-dollar items can add up to big dollars And we have very limited space, so we have to shrink everything these hair clips are so trendy right now We thought we'd show you how we're gonna take a picture of the clip make it a template Add your own artwork to it, and then make it a digital cut file for your laser Step one we're gonna gather over supplies. We're gonna start with some hair clips. I got these on Amazon I've included the link below these are six pack for $10, so they're about $1.66 or something apiece We needed some eighth inch birch plywood, and because eighth inch birch plywood is expensive Or at least more expensive than cardboard. We're gonna use this cardboard to make all of our test cuts We also needed some stain. We're gonna be using some of our friends over at unicorn spit some of their stain We're gonna be mixing some colors. We're gonna use some min-wax stain Stains different colors. Yeah, and we're gonna need some star bond thick to glue the wood pieces onto our clips step two We're gonna make our template. I don't know what this shape is. I don't know what this shape is called It's kind of a weird shape gonna have to make it and I don't know what size this thing is But I want to make something that fits this thing perfectly So what I'm gonna do is I'm gonna take this over We're gonna have a little photo shoot me in a hair clip, and I'm gonna bring it in the illustrator We're gonna create a template when I was taking a picture of this thing I wanted limited colors So I wanted a white background and the color of the clip in my photo So I tried to flood the background to get rid of any shadows I laid a measuring tape down so that when I resized the in illustrator I'd know what size it actually was and then I also Used my flash to try to again eliminate any shadows All right, let's drag that photo into illustrator and I'm going to make a copy of this thing so control C Control shift V. It'll paste it right over top. I'm gonna trace this top one I'm gonna use the bottom one as my control. So let's go to the image trace window and Now I'm just gonna start to play with the image trace until I get a good clean like two color This gets a bit tedious and every image is a little bit different So I'm just gonna fast forward through this I get deeper into image trace and stuff like that over on patreon during our live zoom calls little training sessions Once my image is satisfactory, I'm going to expand it and then ungroup it from there I'm just gonna delete all the pieces. I don't want like this background is a little gray thing back here and Whatever happened to the tape measure. I'll delete both of these things Now I'm gonna group my new object and the original picture I'm gonna try to get the size right. So I'm gonna draw a five inch rectangle Then I'm going to shrink the image until the tape measure is about five inches So that the tape measure matches my five inch rectangle. So that's a good starting point for size of this hair clip All right, I'm done with the rectangle. We can get rid of it Let's ungroup the picture and the object. Let's get rid of this hole in the middle So I'm gonna release it and then immediately unite it now. It's all just one thing I want to get rid of this top tab I'm gonna draw a rectangle up on the top by selecting the top object and the bottom object going to my pathfinder tool and Then using minus front. I should get rid of that tab on the top Now if I select my pen tool, we'll see that there's a lot of extra little nodes a lot of little extra handles so I'm gonna take care of this with the first round of Simplifying my path. I'm gonna go to my path Simplify use their defaults. See it really cleaned up those things. I got a little outlier here. I'm just gonna delete that Now to make sure this thing is symmetrical and both sides match. I'm gonna do a copy Control shift paste that should paste one right over top of the other. I'm gonna change the color So you can see that there's two now My top one's pink control Z control Z. I'm gonna go up to object Transform reflect that should flip the top one vertically Now I'm gonna select both objects the top one and the bottom one my window Pathfinder tool and we're gonna unite these two now.  That's two and a quarter inches wide one or a quarter inch tall All right, let's get these ready to test cut So we're gonna lose the fill and then we're gonna give it a stroke of red. I like red for cuts Now I'm gonna export this as an SVG Then I'm gonna head over to creative space and import that SVG and we're gonna cut it Step three time for some test cuts We're gonna use our cardboard because it's faster and cheaper This is a great thing to use those Amazon boxes. Everybody has them laying around This is a great use for those when you're doing your test cuts start with cardboard put it together Make sure it's the right size. That's the way to do it our first cut was only like 10 15 seconds and It's a little too big.   One of them what two of them actually have the word heifer on them So I think I'm gonna put the cow print on one side and the heifer saying on the other Kind of keep it in that same aesthetic All right Kim's got a bunch of artwork. So I need to make a couple of these I'm gonna give it a background color so I could see these a little easier and make a bunch of copies And now we'll get ready for the artwork All right, this first piece of artwork. We're gonna start with another SVG So I'm just gonna copy this SVG and paste it over top of one of my hair clips One of the big hair clips. I'm gonna position it so it looks like cow print on this thing I'm gonna use that copy Paste right back into place using that control shift V Now I should have a copy of that hair clip object I'm gonna select that and the cow print will go to our Window Pathfinder tool and this time we're gonna crop Now that should put the Cow print in the shape of my hair clip I'm gonna do the same thing to the small hair clip. I'm gonna get it into place I'm gonna copy control shift V And I'm gonna select that and the cow print and crop Now to keep this pattern shape to keep the file size down and to make sure that it engraves in Quick timely manner. I'm gonna rasterize both of these SVG patterns Inside of this cut file All right, that was how to do it if I had an SVG Kim gave me a couple of PNG artwork things too So let's go ahead and drag those PNGs over I'm gonna use the same type of method to place them and then I'm gonna copy the big clip I'm gonna paste it right back into place But the difference is instead of using my crop tool I'm gonna go up to my path and I make a clipping path With both objects selected I'm gonna go to object Clipping mask make now that PNG is in the shape of my hair clip I'm gonna do the same thing to the little guy and To make sure these patterns also keep their shape I'm also gonna raster these images Now these things should keep their shape when I bring them into light burn or creative space I'm gonna add all of the other artwork. Most of these are PNG So I'm gonna be using the same type of technique for all of these I'm gonna be making a clipping mask and then rasterizing all of the patterns inside of the clips Once I'm done I'm gonna lose the fill to all of the clips and to keep their red stroke on the hair clips with the designs inside rasterized and When I'm ready, I'm gonna export this as an SVG For my options. I'm gonna keep the inline style Fonts I don't have any fonts, but I want to make sure that my images are embedded and that the two checkboxes at the bottom Minify and responsive or unchecked Step five, we're gonna make all of our cuts. We're gonna do something different this week We thought it would be fun to show you how to make these cuts on all three of our x-tool lasers We're gonna make them on our F1 in case you want to do some personalization right at a craft show We're gonna make them on our D1 our diode laser And then we're also gonna make them on our P2 our new CO2 laser Do you know we have an online store where you can find all of the door rounds and projects we make on this channel? We also offer craft and paint supplies for one-stop shopping and join us over on patreon.com for additional content a weekly after show Access to our SVGs and a monthly zoom call where you can share ideas Learn from us as well as other subscribers And we've just added Adobe Illustrator classes once a month on Mondays to learn how to use Adobe Illustrator from the master Master What's your vote my vote? I think the P2 I think the P2 did the best Followed by the D1. Yeah, I mean the D1 surprised me. Yeah, I was gonna be my same vote Yeah, I am very impressed I will say with the Virgo and the detail in the lady on the Virgo with her hair I think the D1 did an excellent job of retaining all of the detail It didn't burn it up too much But the flip side of that is it's not engraving super deep So when you look at the salty hair don't care it looks great, but it's got a very shallow engrave Yeah, so the reason why I'm voting P2 is because it has a little bit deeper engrave But yet still does a pretty good job of keeping the detail we did these on the 100 watt laser and The Virgo lady it just blew her out. I mean The F1 did a great job of engraving I think the F1 super fast Yeah, it's specialty is engraving it did cut cut this eighth inch birch It burned a little on the edges, right burning on the edges But I don't think it's really gonna matter if you're gonna stain these if you were just gonna keep these with this Birch look that might be an issue, but if you plan to stain them right on the spot I think you're good to go. I mean, I think I Think I would cut the blanks and then just do the engraving Right one. Yeah, that's the way to do it Just have a bunch of blanks and then you can put the design right on there Or their name or their monogram Because it did a wonderful job of keeping the detail in her dress This is probably the best one to see that she actually has claws for feet So I think they all did a good job they do they have different strengths But I know a lot of you guys have the D1 so I wanted you to see what the D1 can do We've been advertising the F1 and how excited we are about using that at the craft show So I wanted you to see that and then of course big daddy P2 over there We wanted to have some fun as well and show you what it can do Step six and or paint I'm going stain. Yes I didn't know it was open who opened it You probably did Okay, we're gonna stain all of these things we're gonna stain them with some colors I Didn't get any on me There's not a drop on me It's on the light. It's on the camera. It's on the wall on the other wood Goodness, I don't even know how are we gonna? How are we gonna film over this?   Do you think we should? Rough it up a little bit. Uh-huh sandpaper little sandpaper. Yeah, didn't you have some Profit so we are all in on the big clips a dollar seventy-three that is the clip and the wood and Grave turn it's on the D1 and the P2 and It was like seven minutes on the F1. Yeah, the F1 is a fast super fast. Although. It wasn't as deep I think the best engrave actually came from the P2 and It had the quickest cut time right right, but if you have a D1 This is a great craft for the D1 if you have an F1 It's a good little craft for the F1 it'll engrave it and cut it and you can personalize it right on the spot So I think it's a great little craft for all three. Let's talk pricing then. All right So I'm thinking we'll charge four dollars for the little eight dollars for the big Or the set of small and little for two for ten of both for ten Yeah, both the set of small and big $10 and what for like 15 for two bigs two for 15 on the big ones instead of one for ten one for eight Well, I mean, that's not bad. That's a good chunk of change And I've seen a booth over there that when it was really hot out She was selling these things like hotcakes. Yeah Well, and I can attest to that because we were just at a craft show. It was super hot outside I didn't have a ponytail holder and guess what the booth across from us was selling these clips with nothing on them Just plain and I was like mmm. So I bought it. I think I spent on ten dollars just on the Yes, yes, see so yes, I think this is a great then this will totally work for our smalls Yeah, and with that we're about at a time We will see you on Tuesday when we're back with another test cut Tuesday We took the holiday off, but we are back and then we'll see you again next Friday We'll do it build it and make it again, and I mean, can you even balance something this small? I can balance it Oh


of the United States. Thank you very much. Thank you. Thank you. Please. Well, good afternoon and welcome to the White House. I have to tell you, with the South Lawn out here, alternately being white and then green, and I'm so desperate to see it green permanently, that if it doesn't, he stops knowing that way I'm going to have the house painted green. Have a different welcome here. Well, I want to start by thanking all of you for the support that you've given us over the last four years. Back in the beginning of our first term, it was in large measure the support from the business community, from other groups such as yours that enabled us to pass the dramatic tax cuts of 81 and the budget cuts, which lifted the pall of malaise from our economy and put us back in the path of strong non-inflationary growth. We need your help again. We've have before us an historic opportunity to build on the achievements of our first term and secure the foundation of economic prosperity. The American economy is growing faster and stronger than many ever dreamed possible. The resilience with which we snap back from more than a decade of over taxation, excessive spending, and stifling regulation demonstrates the tremendous vitality of the American community or the American economy, I should say. I guess both are all right. We must continue to lift the burdens of wasteful government and tap the energy that still lies dormant in our economy. We must move ahead with the comprehensive tax reform that would liberate incentives by cutting rates still further while making the tax system fairer and simpler for every American. And we must finally, once and for all, gain control of our runaway budget. If we deal successfully with those major tasks, budget and tax reform, I'm convinced that economic growth in the second half of the 80s will exceed the record of strong sustained expansion sparked by the Kennedy tax cuts two decades ago. Earlier today, I presented our new fiscal 86 budget to the Congress. Many of them sitting right here were your sitting. I had my brand new Treasury Secretary, Jim Baker, and David Stockman behind me, as well as my Secret Service details, so I wasn't too worried. Needless to say, I didn't expect immediate and unanimous approval from Congress, but I believe that working together, we have what it takes to get our budget under control without either damaging the economy or endangering the national security. Basically, we're proposing a freeze for the overall budget, excluding uncontrollable debt service costs. Our budget is $974 billion. That's only about one-and-a-half percent higher than the fiscal 86 level. We've asked for structural reforms and other economies to provide range of programs from entitlements to government lending. We've requested real cuts in certain areas of discretionary spending, such as federal overhead costs, where I'm sure the government can get by on less next year, and there are a number of programs that we suggest cancelling entirely. Some of these, such as Amtrak, could be run much more efficiently in the private sector. The defense of our nation is the one budget item that cannot be dictated by domestic considerations. Despite severe constraints on our budget, we must respond to the unprecedented military buildup of the Soviet Union, the largest military buildup in world history. Unfortunately, we had to start from a weakened position, brought on by long years of neglect and underfunding, and we still have a ways to go. You might be interested to know that the scriptures are on our side in this. In 1831, in which Jesus in talking to the disciples spoke about a king who might be contemplating going to war against another king with his 10,000 men, but he sits down and counsels how good he's going to do against the other fellow's 20,000, and then says he may have to send a delegation to talk peace terms. Well, I don't think we ever want to be in a position of only being half as strong and having to send a delegation to negotiate under those circumstances peace terms with the Soviet Union. So, ultimately, our security and our hopes for success at the arms reduction talks hinge on the determination that we show here to continue our program to rebuild and re-fortify our defenses. In this session of the Congress, we'll also be representing or presenting our bill for an historic comprehensive reform of our tax structure. Although we'll be pursuing budget reform and tax reform separately, they're each vital and necessary compliments of the other. They're the twin elements of our program to keep our economy growing, creating jobs and spreading opportunity. We've seen how high taxes will choke off incentive and drive the economy into a downward spiral of disinvestment and unemployment. The mirror image of that is the expanding cycle of prosperity that lowering taxes brings, where more investment brings more growth and more growth brings more jobs, which mean more people paying taxes. We've already seen this work. It's no accident that during fiscal 1984, the first full year that all three installments of our income tax cuts were finally in place, federal revenues actually rose 7% in full terms. Now is the time to get control of our budget, cut tax rates still further, and keep the cycle of prosperity going. Budget and tax reform won't be easy, and we're going to need every ounce of support that you can give us in the months ahead and move this through the Congress. We're counting on you. With your help, we can make the frustration, the stagnation and the decline of only four years ago a distant memory. Together we can open the way to a bright future of continuing prosperity. Together we can really make history. We can get back to a principle of government, not spending more than government takes in. So I thank you and God bless you all and I wish I were just saying permanently thank you and that we've done the job, but thank you and stay with us. Thank you.


That's active bio contaminated sludge enough goo to cause a flux at a molecular level So I mentioned this in a few of my videos Quite a while back on bio mutant I think mainly my tips and tricks one the fact that when it comes to customizing the look of your character And when you get to changing your characters mutations adding more value into certain stats And obviously more from your character to look a certain way I said about this and at the same time it doesn't really matter how your character looks I mean if you make him look like a giant chicken breast because you've built into strength It's fine because later on in the game you can change the way he actually looks without affecting the stats And that's what I bring you today guys a guide on how you can change the way your character looks without affecting those stats Has it gone people? My name is DPJ and if you enjoyed the video leaving a like really helps out And if you like what I see and want to see more bio mutant be sure to subscribe So changing the appearance of your character something you can do well into the game and today I show you how So to do this you need to have 100% resistance to bio hazard This is a must as the area you enter is a bio hazard area and you're spending some time here So you must have 100% resistance to it either spend those bio points or equip armor to assist you here I will say though you get a minimum of 10 bio points once you get to this area You also need a resistance to heat now I will state I myself did not have a 100% resistance to heat I had about 50 to 60% but area you travel through is massive So if you ain't careful you will die what I did to get through this area this heat area with only 60% Resistance to heat was just trip myself with med packs and as soon as that heat gets to 100% And your health starts to drop when it gets to that certain point where you can apply quickly tap up to apply Med packs, that's what I was doing So I just spamming that up button and getting my health back and this was saving me and this is how I got through But I mean it would probably be easier to get 200% resistance in heat But I mean if you feel confident you can do it the way I did it go through it So the area which you need to get to you can see on the map right here You can also see that massive area of heat too once you get to the bio hazard plant You need to follow the path I take downstairs Here there will be a bus with a few smaller ads in which you need to take out Again by all points for days and once you have taken these out guys There is a pool behind where the magic happens and you can use this pool to morph your character to a different shape It does cost one by all points, but I believe you can use it an unlimited amount of times So yes one by all point to change the way your character looks isn't too bad considering the amount you would have got from killing those Enemies so yes guys if this is something you was wondering about and wanted to do I hope this video helps you out On that note the end of the video has arrived if you enjoyed it leaving a like really helps out if you're new around here Want to see more bio-mutant be sure to subscribe and if you never want to miss a video upload Can turn notifications on by hitting that bell button my guys Thanks as always for stopping by and hopefully I will see you on that next one


Welcome to George H. Smith's Excursions into Libertarian Thought, a production of Libertarianism.org and the Cato Institute, narrated by James Foster. Instead of a review, a commentary on Libertarianism, What Everyone Needs to Know by Jason Brennan. Among the introductions to Libertarianism that have been published since the advent of the modern movement, three of the best are Libertarianism, Nash 1971 by John Hospers, For A New Liberty, the Libertarian Manifesto, McMillan 1973, Revised Edition 1978 by Murray N. Rothbard, and Libertarianism, A Primer, The Free Press 1997 by David Bowes. The book by John Hospers, written while he was head of the USC Philosophy Department, was the first overview of its kind. It is perhaps a sign of the innocence of the Libertarian movement during the early 1970s that a special Libertarian Party paperback edition was printed by Reason Press and then distributed as part of Hospers' 1972 presidential campaign. Although presidential candidates often publish books, most are ghostwritten, I doubt if any presidential campaign before or since has issued a book that runs nearly 500 pages and devotes 40 pages to a discussion and critique of anarcho-capitalism, not to mention other fine points of political philosophy. Although Hospers' Libertarianism has much to recommend it, its length, slow pace, and relatively conservative tone render it problematic as an introduction for readers who are not already somewhat familiar with Libertarianism. More fiery, more radical, and more substantive, especially in terms of its historical perspective, is Murray Rothbard's For a New Liberty. I have often recommended this book to newbies, but I have done so selectively. Since it explicitly defends Rothbard's version of anarchism, I have found that it appeals mainly to young persons who have already embraced some form of radical political philosophy, such as Marxism or left anarchism. But in my experience, it is not a book that appeals to the average Republican or Democrat. If the Libertarian porridge of Hospers is too cold for some newbies, and if that offered by Rothbard is too hot, I have found David Bose's Libertarianism a primer to be just right. It is the book that I have most often recommended when asked what someone should read for a good overview of Libertarianism. With the recent publication of Jason Brennan's Libertarianism, What Everyone Needs to Know, comes a new addition to my list of recommended introductory texts. This is part of Oxford's What Everyone Needs to Know series, which began in 2008 with a book about Kosovo, followed by books on Cuba, Burma slash Myanmar, Food Politics, Animal Rights, Drugs and Drug Policy, Overfishing, Energy, Healthcare Reform, and many other topics. I cannot say what everyone needs to know about these and sundry other topics, but I suspect that some books in the Oxford series present more information than most people want to know. I cannot imagine what I need to know about overfishing, for example, and some other titles exude the stench of political correctness so much that I would avoid reading them all together regardless of my supposed needs, unless I were in a masochistic mood or they came highly recommended by someone I respect. My surly remarks here reflect a personal prejudice against books that present themselves as What Everyone Needs to Know about a given topic, especially when such books deal with controversial subjects. What we typically get is not What Everyone Needs to Know about a topic, but what a given writer wants to tell us, as written from his or her own value laden perspective. Another reason I have shied away from books in the Oxford series is owing to their Q&A format, which can result in a highly artificial organization of material, unnecessary repetition, and questions that no one would ever ask, but which have been constructed after the fact for no reason other than to conform to a prefabricated structure. I have mentioned my personal prejudices in order to explain why I was initially reluctant to review Jason Brennan's latest book, Libertarianism What Everyone Needs to Know. I am glad to report that I was pleasantly surprised, very pleasantly surprised. Brennan, Assistant Professor of Ethics, Economics, and Public Policy at Georgetown University, and a contributor to the Bleeding Heart Libertarianism website, has given us a splendid introduction to Libertarianism. Nevertheless, I remain reluctant to review Brennan's book. Why? Because I agree with most of it, and to compile a laundry list of its many merits would quickly become tedious, at least for me, and possibly for many of my readers, most of whom are already Libertarians. I have therefore decided to focus on those areas in which I disagree with Brennan. I shall do this in a two-part commentary. Before proceeding, however, I should give an indication of how his book is structured. Brennan's book is divided into nine chapters and consists of replies to 105 questions. The chapters are The Basics of Libertarianism The Nature and Value of Liberty Human Nature and Ethics Government and Democracy Civil Rights Economic Freedom Social Justice and the Poor Contemporary Problems Politics Yesterday, Today, and Tomorrow The replies vary considerably in length, running from a couple paragraphs to informative mini-essays on topics such as are there different kinds of Libertarians, and are Libertarians themselves unusually selfish? The latter question illustrates a valuable feature of Brennan's Libertarianism, namely that it addresses topics that are not normally covered in treatments of Libertarianism. Although I suspect that Brennan felt the constraints of writing in the Q&A format, he admirably overcame many of the shortcomings of that format and produced an overview that covers not only the usual topics, but also numerous topics that are rarely discussed. So much for my review-like comments. For more information, see the Amazon preview. Before proceeding with my critical remarks, which may suggest that I disagree with Brennan more than I actually do, let me be clear. This is a first-rate introduction to Libertarianism, and I recommend it highly. Indeed, the fact that it contains substantive points that merit critical consideration is a testimony to the value of the book. Unlike many surveys that consist of nothing more than bones, Libertarianism, what everyone needs to know, also contains a good deal of meat. Parts of the book will therefore be of interest to veteran Libertarians who know the standard Libertarian catechism by heart. Brennan divides Libertarians into three general categories, classical liberals, hard Libertarians, and neoclassical liberals. By hard Libertarianism, Brennan means what most people have in mind when they think of Libertarianism, such as the ideas of Ein Rand, Murray Rothbard, and Robert Nozick. Brennan goes on to say that hard Libertarianism does not represent the main line of broadly Libertarian thinking. In some respects, it is an aberration inside classical liberal thought. This rather peculiar claim is credible only if one defines Libertarianism so broadly as to be indistinguishable from classical liberalism and then treats the latter as the norm. This is apparently what Brennan wishes to do. He points out, for example, some modern classical liberals are reluctant to call themselves liberals of any sort, given how the label has changed meanings since the late 19th century, so they call themselves Libertarians instead. Classical liberals, according to Brennan, were the first Libertarians. Well, yes and no. It all depends on how we view classical liberalism. If, like Brennan, we view David Hume as a classical liberal and verify classical liberalism with Libertarianism, then we will have cast a net that is so wide and inclusive as to transform many political philosophers over the past centuries into Libertarians. By this standard, a figure like Murray Rothbard may appear to be an aberration from the main line of broadly Libertarian thinking. But it is also possible that Brennan has painted Libertarianism with a brush that is too broad. I don't wish to get bogged down in a debate over political labels, but I do wish to point out that classical liberalism should be viewed as a general tradition, one that included a broad range of diverse ideas and thinkers rather than as a specific ideology. But even if this is what Brennan meant in referring to broadly Libertarian thinking, it is still misleading to depict hard Libertarianism as an aberration within that tradition. More accurate would be to characterize hard Libertarianism as the radical wing of classical liberalism. Many influential classical liberals, such as Thomas Hodgkin, Herbert Spencer, Oberon Herbert, and Gustave di Molinari would qualify as hard Libertarians by Brennan's standard. These and many similar figures were scarcely aberrations within classical liberalism and if they seem such to modern historians, this is largely because they have been neglected in standard histories of political thought, which typically focuses on more wishy-washy liberals, such as J.S. Mill. Another factor we should keep in mind is that the label Libertarian was typically applied during the 19th century to radical individualists, including anarchists, rather than to classical liberals, per se. The label retained its radical edge well into the 20th century when it was adopted by the likes of Frank Shodorov, Murray Rothbard, and other members of the old rite. The broader meaning of Libertarian, which has made it virtually synonymous with classical liberal, is a relatively recent development. My disagreement with Brennan on this point is a fairly minor issue. It does not substantially affect anything of substance in his book. Indeed, it is quite possible that our disagreement is more apparent than real and that it stems from the limitations of the Q&A format, which did not permit Brennan to discuss this matter in detail. Far more problematic is Brennan's third category of Libertarians, namely neoclassical liberals. Brennan says of this group, neoclassical liberals share many of the same concerns of the classical liberals. However, what separates them from the older classical liberals is an explicit foundational concern for social justice. Many Libertarians get their hackles up whenever they encounter the term social justice, and I confess to sharing that reaction. On a superficial level, the term is guilty of nothing more than redundancy. The concept of justice pertains to a moral relationship between two or more persons. So justice is an inherently social concept. We must therefore wonder what it means to speak of social justice specifically when all justice is social in nature.  All unjust acts are necessarily acts committed against other people. Brennan discusses social justice in Chapter 7, Social Justice and the Poor. He writes, Social justice or distributive justice is a moral standard by which some people judge political and economic institutions. Advocates of social justice believe the moral justifications of our institutions depends on how well these institutions serve the interests of the poor and least advantaged. The basic institutions of society must sufficiently benefit all including the least advantaged and most vulnerable members of society. Brennan is well aware of the libertarian objections to distributive justice when employed as a political standard, as illustrated by his excellent summary of the criticisms presented by Robert Nozick in Anarchy, State and Utopia. But Brennan also points out that Nozick's entitlement theory of justice applies only when original property titles were justly acquired. He then notes that the history of acquisitions and transfers has been highly unjust. A good deal of land, for example, was seized by conquest from people who had themselves seized it through conquest. And many corporations receive bailouts, subsidies and loans from governments and use the power of eminent domain to seize land and property from the poor for their own benefit. Such observations are nothing new, of course. Murray Rothbard and many other hard libertarians have discussed similar problems in considerable detail. What puzzles me is not that Brennan also regards past injustices as important, but why he uses this issue as a springboard to launch a category of libertarianism that precious few libertarians have ever heard of, whose advocates he dubs neoclassical liberals. How exactly do neoclassical liberals differ from hard libertarians? Brennan explains, neoclassical liberals agree with hard libertarians that everyone has a right to acquire and use property. However, they add that reasonable people dispute the exact nature and scope of property rights. Property rights are sets of conventions and there are many different conventions any group of people could live under. Neoclassical liberals say that it would be unreasonable to demand that everyone accept and abide by these conventions unless they had a sufficient stake in them. Thus, if one set of property rights conventions tended to emissary the poor or leave innocent people without any wealth or opportunity, that would be reason to reject those property right conventions. It is much too facile to treat property rights as conventions, especially given the broad meaning that libertarians have traditionally given to the term property, a meaning that has permitted them to speak not only of property in one's person, that is, self-proprietorship or self-ownership, but also of property in one's conscience and labor and even, as with James Madison, of property in one's time. That there are some conventional aspects to external property rights is obvious and the same is true of contracts and other features of libertarian theory. But what exists at the margins of a theory does not necessarily permeate to the core. Theoretical problems aside, however, I am unclear about the identity of Brennan's neoclassical liberals and I am skeptical about whether they are numerous enough to qualify as a distinct school or tradition of libertarian thought comparable to classical liberalism and hard libertarianism. I could be wrong, but I suspect that neoclassical liberalism is confined to a handful of academic philosophers whose influence on the general libertarian movement has been minimal at best. After 12 years of participating in various internet forums on libertarianism and after writing posts that number in the tens of thousands, I do not recall encountering even one self-identified libertarian who called himself a neoclassical liberal or who has defended the views that Brennan attributes to that school of libertarian thought. Thank you for listening to Excursions. To learn more about libertarian philosophy and history, visit www.libertarianism.org.


What's the word, y'all? The first round of NBA All-Star voting came out yesterday and I realized that I was part of the problem. So here they are. We got LeBron, James, and Kevin Durant leading their respective conferences and total votes, which is cool, because last time we got them as NBA captains of the All-Star game. We got some very, very good memes. And of course it was in the midst of the James Arton trade, so that kind of carried it. But still, both of those guys know how to play to a camera. Those are two really good captains. I remember once upon a time, LeBron James was known as being undefeated in the All-Star game when he was the captain drafted. I don't know if that still ranks true today, but if it does, here's another opportunity, LeBron. But there are some very noticeable things when I look at this, like Kevan Looney being top 10. Shout out to Loon. Also, you got Paolo and Nicholas Claxton. They're gross. All-Star Reeves and Jordan Poole. And the reason I'm pointing them out is because they have big fan bases and they really shouldn't have this many votes compared to some of the people that are snubbed. So when I say I'm part of the problem, I am part of the reason why Dematica Bonus is not even ranking top 10 amongst front-court players because I personally have never put together a real-life ballot. This is the first I've ever went tweeting NBA All-Star Kenny Beachham and 500 people re-tweeting it and 5,000 people liking it. Shout out to y'all. Y'all are crazy. But this is the first I've ever been when I was on Cloud9 as a Bulls fan, putting Zach Levine, DeMar DeRose and Zach Levine, Fred Van Vliet, and Zach Levine again. Yeah, those are good times where everything was great and we were towards the top of the conference. Man, what I would give to go back to those times. But this season, the NBA decided, forget the Twitter thing. We've seen enough and part of it might be because of BamBam's tweet last year. So last year, of course, BamBam tweeted this and BamBam is one of the biggest K-pop stars in the world. I mean, we're talking 11 and a half million followers. This tweet goes out there. It gets almost 40,000 re-tweets, 70,000 likes and then also get the army to go ahead and tweet Andrew Wiggins, NBA All-Star. And in the moment, I was like, man, Wiggins don't deserve to be there. But when you look at the options outside of him, considering how many injuries there were and how good he was performing, he deserved to be that shout to Wiggs and he was the second best player on the NBA championship team, shout to Wiggs. But the NBA decided, I'm not saying specifically because it is, the NBA decided this season, no more tweeting. If you want to put together a ballot or you want to vote for anybody, you got to put out a full 10, you got to go to NBA.com or you got to use your app. Which is just a lot of work. So I haven't put together the ballot, but today that changes. And it's understandable that DeMonte Sabonis is not top 10, even though he's playing like it. He should undoubtedly be an All-Star, but he's playing in a market like Sacramento that if you're not an NBA sicko or NBA super fan, you probably overlooking exactly what the Kings are doing slash what DeMonte Sabonis is doing.  You got to really go down. You see the Air Fox, who also should be getting a lot of votes, but you got to go down for some time. Even if I go filter and say Western Conference front court, he's on the third row behind some people that you're used to voting for. Shout to Larry. Come on, man. I got a lot of love for you to put up 49 last night. That's just put him in the game. But like you're undoubtedly going to vote for these four people, they're up top, they're having good seasons and they're notable names. And a guy like DeMonte Sabonis, even when he was an All-Star in Indiana, was kind of like an afterthought. He was like the last man in the game. Today voting counts times three. So I'm putting together a ballot that we'll see some of my favorite lowly ranked slash snub players. But then again, we're only voting for starters. And if we're thinking about the starters in the Western Conference, but then again, my little vote for DeMonte Sabonis is not about to get him into an All-Star start spot, which is what we're voting on the end of the day. We're only voting for the top 10. The rest is voted by the coaches. And I think because of that, Sabonis gets in, but we're only voting for the starters. And then based on what I see right now, out West guarantees starter lock based on the fan voting, which is 50%, 25% is the players and 25% is the media. LeBron has the fan voting. He's gonna have the player voting and he's gonna have the media voting. LeBron James is an absolute lock to be a starter, obviously. Jokic, also absolute lock to be a starter because he's got the fan voting here. Because he's gonna have the media, he might be number one on media and he'll also have the respect of his peers at least enough to be a starter lock. Steph Curry, Luca Doncic, also locks on both fronts. So we're looking for one, one front court player out West to take that spot. And right now it is Anthony Davis based on the fan voting, but Anthony Davis has only played 25 games. And I wonder how the media looks at that. Again, we don't know when he's coming back before the All-Star break. He should be back, hopefully. But we don't know how the media's gonna look at that. And we don't know how the players around him are gonna look at that, especially with Zion being right on his tail. And I was not honest, also out on injury, unfortunately. It's not been a great year for injury luck in the NBA. But I could see a world where Z takes the last starting spot in the front court if Anthony Davis is not playing and he doesn't have the respect of the others. Out East, I'm seeing Kevin Arendt and Yanis's absolute locks for the same reasons. And I honestly think an absolute lock for the back court is done too. I think Kyrie Irvin has the fans. He's 1,000% gonna have his peers voting. And the media might deduct him because of the stuff that happened earlier in the season. But I think because of the fans, 50% and the players are the 25%, 75% of the voters saying Kyrie Irvin is number one and number two. So he's gonna have a lock. And Don Vementru just had a 71 point game. He's absolutely a lock too. So I think there is one spot open out East between Jason Tatum and Joel and Bede. As right now, Joel and Bede has the fan voting by about 100,000, a little bit less than that. And if you look throughout the last previous seasons, Joel and Bede has handled Jason Tatum when it comes to the fan voting. Last year, Jared Allen had more votes than Jason Tatum and Miles Bridges had more votes than Jason Tatum. But things are different this season for Tatum because he's playing at an MVP caliber level and the Celsius are good. If you remember last year, the Celsius started off so bad and he was playing good, but when you start off slightly above 500, you're probably not gonna get a lot of the votes. And now things are different. So I wonder what the media and the players think of that last starting spot. So we're doing all of this voting and we're reacting to these things. When in reality, like eight out of the 10 spots are locked and guaranteed. So we just voted on the other stuff. We just looking at the fact that the Knicks only have Dare Grows and be like, what is New York doing? And honestly, the Dare Grows votes aren't just coming from Knicks fans. I know plenty of Bulls fans is putting Dare Grows in their ballot. I know Tim Bulls fans that have put Dare Grows in their ballot and then he's got the entire market overseas too. So that's why Dare Grows is top 10. But like Jalen Brunson, he might not make the actual game, but he's been playing all-star caliber and Julia's Randall's relationship with Knicks fans is kind of crazy. A couple of years ago, he was an all NBA and then a year after that, he's just in the crowd and yada, yada, yada. And this year, he's playing at an all-star caliber level. But the fact that he has less votes than Nicholas Claxton, who's just over the bridge of him, is insane to me. Nicholas Claxton's fan base, whether it be the Brooklyn Nets or just his individual stands, should be outweighed by Julia's Randall by a thousand, considering he's playing in the bigger, on the bigger team in the bigger market and he has been an all-star before. So it's insane to me that he hasn't even cracked top 10.  So should it matter if he's top 10 or not? It doesn't, it really doesn't. Shout out to the Warriors fans. I mean, they do not play. Them boys do not play. They gonna vote they guys in. I'm surprised we didn't see Dante Devincenzo in the top 10. I wouldn't be surprised if he's number 12. I'll say that. I'll be surprised if Devincenzo's number 12 because they vote and they vote daily. What if he did he say, vote or die? Shout out to Diddy. If you wanna see your guy be a starter, you gotta vote or he not gonna get there. Leave a like or subscribe. You can do both. You can do both.


Hey, what's up everyone? This is Akash Teepthar, Toxicoder and I'm accompanied here with Alberto, btco.ninja and we are going to talk about how to join Fedora. Before we get started though, I want to thank Murray, Vipul, uncle for their support in making this presentation happen and Adik Shah because basically we would be speaking what she wrote. Who will delve into things Fedora Joint SIG has been up to and what we do to make sure that the newcomers come, they see and they conquer and they become valuable contributors to the community. I will now pass it on to Alberto who would talk about the things the newcomers would like to know about and the exciting sub-projects, SIG teams and everything else in between that they would want to know. Over to you Alberto. What is Fedora? Fedora is a community from a lot of parts of the world and we had, you know, a vision to create the vision to the world-wide benefits from the free and open source software built on inclusive and welcome and open-minded communities. Our mission was to create an innovative platform for hardware, clouds, containers and enable software developers and another users and the community members to be toilets the solutions for their users. So this is Fedora. Fedora was organized in three big bodies of leadership. Fedora Council, FESCO is a technical committee, means it represents the old-age leadership leadership in Fedora. So what we are looking for are new contributors. Well, we look for potential, not to polish skills. You know, we want to learn together from technologies, from design, from a lot of topics. So we encourage prospect contributors in communication with existing contributors. We provide self-contained and well-documented issues for newbies to feel better, feel safe. So we will give to help prospective contributors to turn in on successful ones. You know, we want to provide a comfortable communication from Seinell, from prospective contributors. You know, we are looking to present a healthy community to the new contributors. And yes, we are well-welcome for any one to contribute. How do I join for the community? It's very simple. We need first, you need our FESCO, Fedora Council System, KEPSTRAFT, Fedora Project Contributors, projects to work on. So use a grand authentication, authorization for various, for many components. These give us identity in the project, you know. So we'll use it in many places. And we'll give you a welcome ticket. These welcome ticket help us to track the advance under the community, help you and look in place for switch to your interest, ticker help us money for track, you know, advances, projects, and many other things. So what do a new contributor when starting the project? Well, the first thing is make a sale introduction, start the exploration of the project, look in places for contribute, and interact with another contributors. By example, here in the release party, in another, in another place less nests or flock, or using the ERC channels or Telegram. So at the end, we are part of the community and can help another contributors to onboard in the project. Well, this is very important. We have the four FESCO for the community. We are looking for freedom, friends, fitters, and fears. You know, freedom is very important. We are advancing of the free software and content. Examples of content are by example, if the com blog, the community blog, or the Fedora magazine, there are examples of the free content and free software. You know, everything we package is free software. Friends, we are looking for create and maintain and carrying a healthy community, inclusive community, where we can advance together from the free software, no bother, no matter the age, the skill, and many other things, no. The features, we are looking for innovation and make Linux powerful and flexible and useful for many users. And the first, the first is one of the five words is we're committed with innovation, no? We provide the latest, stable, and robust, and powerful free software in Fedora. It's great. So where do I can start contributing? Well, we have many technical projects. By example, in top, we have the Fedora engineering and setting committee, which is an elected body for representing the technical leadership of Fedora. They do the decisions about the technical innovation we are adding in the project. Fedora modularity is an optional repository for additional versions of software and independent life circles. This means we can have multiple versions of some software for, and this form, the developers can start three, maintaining software from versions, from different versions. This is important. We have the Fedora containers. It's about the discussion usage and maintenance development of Fedora-based containers. Neuro Fedora, I love Neuro Fedora. Neuro Fedora is an initiative that provides a rate to use Fedora-based free and open source tools for neuroscience. It's great. We have the Taylor IRC SIG. It's a voluntary group to create the bridges between Telegram, IRC, and another channel of communication. We have Fedora CI making sure that operating system is always ready for continued building and testing in set-up package. Fedora websites and apps development and maintenance and administration of websites and applications. The Fedora ELN is composed to emulate the Red Hat Enterprise Linux functionality. It's an important one. The Fedora minimization objective is maintainers to try to maintain size optimization content from the lower amount of effort. We have the Fedora QA. The world is continually improving the quality of the Fedora relays and updates with continued testing. The community platform engineering, the CPA, is a team dedicated to support the Fedora and Corus project infrastructure and release engineering. Also, the Fedora I3-SIG, the goal is to produce a Fedora E3-based Fedora Spinware E3-SIG. It's an E1-based Windows Manager. Sorry for the bad English. Thank you, Alberto. Talking about non-technical part of things of the community, we have Fesco. The MindSphere community is just like Fesco. It fosters interaction and communication inside the community and takes care of the community's happiness, sustainability, operational strategies, stuff like that. Outreach revamp, if I remember correctly, is one of the exciting things that MindSphere helped to start. Then we have community operations or comops, like the way we call it, which helps provide tools, resources, utilities for different sub-projects like the ones that Alberto just talked about across the Fedora universe to improve effective communication. Up next, we have Fedora documentation, wiki pages, quick docs, contributed guidelines, Santora. You name it and you'd find that this team is behind every documentation task in the community. Then we have, this is my personal favorite, that the badges. It takes inspiration from Mozilla's achievements and it helps recognize contributors for all the good stuff that they have been doing inside the community, as well as you get to have the shiny badges too. Next slide. Then we have Jointseg. Like Alberto already mentioned, we are what bridges the contributors, the newcomers with the community. Simply put, we help the prospective contributors to get started with community engagement. Once that takes place, the next thing, what comes up is entirely up to the contributors. Fedora magazine consists of tutorials, information, announcements from everyone. It doesn't matter if you're a user, contributor, developer, sysadmin, package or anything else. You can potentially become an author here if you're interested. Fedora localization aims to bring every single line of Fedora that includes packages, websites, documentation, culture to you and it doesn't matter if English is your first language or not. Fedora localization will make sure it reaches to you. Next slide please. Now that we talked about how the newcomers can join and the things that they can be a part of and the ways that they can contribute, let us talk more about how contributions can be taken up by a notch with simple practices like we suggest. Of course, I do understand that no two contributors have the same way of contributing, but these practices seem fit to most of people, so why not give it a try? Time commitment. We do understand that there are things to take care of in personal life, bills to pay, works to finish and there's day job. So we want the contributors to be very, very sure about how many hours they would like to be able to dedicate to Fedora. The next thing is to see if they're permitted by the work and if there are any rules related to work which does not allow them to do a contributions beyond their work time and if you're allowed a bioavailability from your folks for the time that you spend with us. Volunteering is rewarding, yes, but it should not come at a cost, should it? Joining just for the sake of contributing is one of the biggest mistakes most new contributors make. We at Fedora are much more than lines of coach, documentations and graphics. We are friends. So newcomers are appreciated to take some time out, interact with folks, make friends. We love to meet new people and to answer questions. Now if you have found something to work on and if you feel that it's just right, it is something that you want to work on down the line, I would suggest to hold on and observe first before jumping right in. You need to see how things are done and you need to understand why things are done the way they are. Moving on. There is no assignment of work in Fedora, quote-unquote assignment because we believe that if you pick what you want to work on and if you contribute in your own way, that would be the best possible contribution for the community and for you as well. So grab something to work on that would be fun or something that you're interested to work and I believe that you'd have lots of fun in contributing. Picking something difficult to work on right away can be overwhelming and there would be lots of chances of failure when you do that. So newcomers should always try to pick something easy to start with and then if they feel like that yes, this is something they would want to work on, then with the help of mentors, they can go to the deeper end. Talking about mentors, finding contributors who have been a part of the community since some time now, it's very important for you to become a successful contributor yourself. Like there are stuff in packaging where you require sponsoring in order to become a package or it's very important because mentors help you to do things in the right way and finally keep yourself busy. Like I always see that every contribution should end with that easy line in the movies that it always ends up with. You must have a piece when they say that this war is far from over. This is just a beginning. Such should be the nature of the contributions as well. So if one contribution is over, pat yourself on the back that yes, I've done something of value and move on to the next one. Moving on. Being contributors from various places across the globe, coming from different walks of life, doing different things in day jobs. Federalized diverse and it is something to be proud of. It is something I call one of our biggest strengths. But yeah, there can be disconnects here and there. There can be miscommunications, misunderstandings and happiness which might creep and you never know. It comes down to us contributors, every single one of us to ensure that it is kept to a minimum. The best case scenario is well to make sure that doesn't happen. But we have some ground rules that we cover on the next slide. So these are the natures that we try to live up to. Do not see them as obligations, but rather as responsibilities that yeah, I should live up to it if I'm a contributor. The first one is being considerate about what possible consequences can be for certain actions. In Fedora, every task is open and the task for documentation, corrections and translations, commit and figure, be it anything, it might be used as a base for somebody else's work. At the same time, you can be using somebody else's work and proceeding on. So do take into account how your action can cause ripples and the consequences can be. So that's what being considerate is all about. The second one is what it goes without saying, disagreements are okay. They might happen day in and day out. But understanding that discussions should never turn into arguments, targeting opinions should never turn into targeting people. Being respectful is all about that. I mean, we face frustrations and they can be frustrating. But we should never let that turn into a personal attack. Finally, we did take some time out, didn't we? No, this slide is fine. The thank you slide. Yeah. Here's hoping that you went bold. Albert to the final slide. Yeah, thanks. We wouldn't keep you here for longer. I would like to thank you all for your attention and the links that you see displayed on the slides can be found in the link that Wipple just pinned, as well as in the chat section. So feel free to reach out to us if you're interested to contribute to Fedora. And I would like to thank you again for being with us. Thank you for joining us and we are open to questions. Don't seem to have questions as of now. We'll wait for some more. And then I think we can close this. What do you say, Alberto? Matthew seems to have a question. If other people want to learn to give this presentation and to share the knowledge of how to get involved, how should they start? Well, to start with, yeah, so we did not cover how they can, you know, reach the place where they can provide presentations, did we? We covered everything else. But yes, joining the community, getting to know people would definitely be one of the first things to do, knowing how things are done and to be able to justify why they are done in the first place. And then I believe that this all comes under community operations because in order to make sure that the community thrives, it has the strategies that it requires. So getting in touch with them can be one of the things that we would want to do if we are to come over here. And definitely, the slides do have a CC by a 4.0 international license. So please feel free to share these slides and reuse them as you see fit. So I believe we can close this presentation by in a minute if we don't have any more questions. So Matthew, I don't think, oh, yeah, I think we have gone past the one minute time. So I think we can close. Thank you, everyone, for being here, for listening to our ramblings. I believe that you can drop us a drop right at the federal joint chats, be it on metrics on Discord or on Telegram. Feel free to join right there and we can continue our conversations there. Thank you so much. Thank you so much.


What being on the path of the divine means is that you don't have your own nonsense anymore. Where does your nonsense come from?  Yes? Yes or no? A bit from your genetics, a bit from the external impressions. Using these two things you cook up the rest. What comes from external situations is all too much fragmented bits and pieces. Maybe this information is useful for your survival, it is what comes from your genes.   Because even now your DNA is only 1.23% different from that of a chimpanzee. Your evolution is only that much. So the more you depend on your genetics, the more of a monkey you become.  If you travel like this, one moment if you are not alert you will go off at a tangent.  So being on the path of the divine means first thing to become free from your genetics. It is in this context we say Shiva is swayambu, that means he has no parentage. He dropped it. He cleaned his mother and father out of him. No father, no mother, just here. Because genetics means repetition. Repetition means cyclical nature. Cyclical nature means you are going in circles, you are not going anywhere. So this eye business and all you reading bits and pieces of Vedanta, please stop that. Don't read all this stuff. Me and my consciousness and my witness and where is the witness, witnessing the witness, witness, witness, witness, witness. You can go on endlessly. Witness, witnesses the witness and witness, witness, witness, witness, witness, witness, witness. This is just a mental game.  Philosophies will flourish. Philosophies, the more philosophical a society is or the more philosophical a human being is, the more he is clearly declaring to the world that he is a pretender, what he does not know. He acts like it knows. Simple practical people, they know they don't know and they're proud that they don't know. That's a problem but at least they know they don't know. So do not get into this trap of intellectualizing the existence. Very confidently you use this word existence but do you know what is existence? Does anybody know what is existence? Nobody knows. So when we talk, when you use words of the… of whose meaning we do not know, that's called rubbish, isn't it? But maybe socially very valuable rubbish because it confuses somebody. If you can confuse a few people, they may believe you're intelligent. Really, if you want to be perceived as intellectual, you just have to confuse a few people. You don't have to bring clarity to anybody. The work, the spirituality or the spiritual work is about bringing clarity, not confusion. Confusion we do only when people have deep conclusions. When people have conclusions in their mind which they believe is everything, then we confuse them a bit so that their conclusions get loosened up. One Shankaran Pillai, Vanda, at Meghalaya State Lottery, that's still on, is it still on or gone? Lottery. Okay, at that time, 1984, I changed the date, what's the problem? After all we made up the dates, we can use it the way we want it, isn't it?  Fifty-six crores, you heard those days, isn't it? So how did you get this lucky number? So Shankaran Pillai said, I had three consecutive nights, I had a dream. In the dream, it said, number eight, number eight, number eight, three times. Three times it appeared, eight, eight, eight. Then I thought, three times eight is thirty-two and I went for the thirty-two ticket and I got it. And people said, well, three times eight is not thirty-two, it is twenty-four. He said, what does it matter, I won the lottery. So I'm telling you, existence does not fit into your logic. It's not logically correct, it's not logically correct. That means what's wrong, that means what's wrong. That means your logic is too limited, isn't it? No, existence is not correct. Why is it not fitting into my logic? This is the argument of a madman, isn't it? This is the way it is. If your logic doesn't fit into it, there's a problem with your head, not with the existence.


Hi, welcome to the Linux Foundation open source summit 2021. My name is Venkat. I work as a senior architect at Rezapay and I have with me my colleague, Srinidhi who works as a senior software engineer at Rezapay. Today, we would love to talk about our journey into improving our developer experience and actually how we built a cloud native dev stack for hundreds of engineers. A quick preview into what Rezapay does, Rezapay enables frictionless payment, banking and lending experience for merchants of various scale and sizes. Today, we process billions of transactions for millions of merchants across the country. In the last five years of our existence, Rezapay has been in the forefront of a lot of payment and technology innovation in the country. A quick overview of what our growth metrics looks like and this is sort of a motivating factor in terms of why we in fact went ahead to even embark on this journey. Over the last four years, our engineering headcount has grown by about 10x. We have actually scaled out to full-fledged pods and views, four views to be precise and about 30 plus pods as we are still growing. We have about 100 microservices in production over the last two years alone. We have about 50 plus microservices and it's still growing. We have acquired three companies in the last three years and that has led to a polyglot stack with multiple languages that we have in operation today. That also means that we have about 1,500 deployments per month that is sort of going on. A quick overview of what our CI CD practice looks like and the motivation again for this particular talk itself. Traditional development process, developers raise their PRs or commit code onto GitHub. We use GitHub Actions as a continuous for doing a lot of our build and operations. This is something that has evolved over the last five years. We have gone through a variety of CI CD stacks and this picture that you're seeing here is what we have today. So GitHub Actions is used generally for creating all our build images, running through basic unit tests and a variety of other things with integration to report portal and a bunch of other reporting tools. Once the images are available, a developer would be able to deploy their code on a pre-prod environment. We use Spinnaker as a continuous deployment tool. Spinnaker for those of you who do not know is an open source platform created by Netflix.  And once the developer is satisfied with the test run, they go on to deploy their code onto a canary infrastructure and production. We heavily rely upon canary infrastructure for many use cases, primarily because our work literally hards on one of the most sensitive aspects of human life, which is people's money. So we need to be really, really careful in terms of how we roll out code to production. So developers deploy their code to canary. Spinnaker again provides a mechanism called Kayanta. We deploy a lot of threshold tests on canary with our monitoring infrastructure on Prometheus to a distributed tracing to what not. And once these canary thresholds pass, the deployment is automatically promoted to production in case the thresholds fail, the deployment is reverted back. Pretty much we use all our infrastructure runs on AWS. We are, by the way, we probably are the first in the country in India at least to have gone in with a full grade production, full-blown production grade Kubernetes infrastructure somewhere in late 2016. Today, we have rewritten all of our infrastructure to run on EKS, which is AWS's managed version of Kubernetes. Again, since we are on Kubernetes, we have a heavy dependency on Helm charts. All our deployments are packaged as Helm charts, Spinnaker is something that we spoke about. And the entire infrastructure is again encoded in data form. And specifically for making this a self-serve, we have you, we are using an open source framework called Atlantis that allows developers to freely provision infrastructure in a self-serve fashion. And again, GitHub actions is something that we already spoke about, which is the CA part of the story. Now, one thing that might be quite obvious is that this is typically a development process that happens for every single feature release in more than many ways. And a lot of time goes in primarily because of the way the CACD process is constructed. And the CACD process is not very different from many other places, independent of whether it's a continuous deployment or otherwise, there are always going to be challenges in terms of how you roll out both the production and what it primarily means is that there are development challenges which actually hinder agility and hinder productivity. A quick overview of what some of the challenges look like. On the first side, what we have is general sequential development challenges. Today, because of the number of developers that we have and also because of our microservices journey, the development process is largely sequential. And what we mean by that is that there could be, tons of developers are working on a particular repository. Each one has a dependency in terms of how the features are getting loaded out and they have to sort of coordinate amongst themselves in terms of, even if it is a two member team to a five member team to a 15 member team, the process is in terms of coordinating how development can actually happen in a more systematic fashion. The second part of the problem is that we have a lot of dependency on AWS specific cloud services like SQS, SNS, et cetera. Most of this is today mock in a local dev environment that reduces the confidence begin with.  On the right hand side, is our problems very specifically with the shared environment. And what do we mean by shared environment? What is that I as a developer, if I'm working on a service, I'm only going to be working on one service and I don't probably require multiple copies of dependent services to be running in production in a pre-prod environment. And because I have a dependency on another service, it's quite possible that another developer is working on the dependent service could have actually made change which could be breaking my test. So how do you actually scale out the shared environments for hundreds of developers and also for hundreds of services? That's one side of the story in a cost effective fashion. The other part of the problem is because of the fact that there are the shared environments, how do you meaningfully demo feature changes to product and business teams without actually bothering about another developer overriding my changes? The third part of the problem is today in our world, we have a lot of our work depends on integration with third-party partners, gateways and banking providers and a bunch of other things. So many of these integration sometimes can run from days to weeks which also means that this every developer whoever is integrating with these partners or gateways, they need to have an environment that is exposed for several weeks sometimes. And how do you sort of really keep it up and running in a seamless fashion? The other sort of problems are again in terms of infrastructure provisioning itself. Like I mentioned, all our infrastructure is encode via Terraform. Even though we have Atlantis, there is a burden on the developers to actually learn Terraform DSL to be able to provision most of the infrastructure that is needed. The other part is in terms of the debugging challenges itself. And like I mentioned, because every code commit goes through an entire development and deployment process, even to debug a simple code break, the developers are going to go through a lot of context which between the actual application which is running to actually going ahead and looking at something like a trace or something like logs, et cetera, et cetera. The other part of the problem is the time that it takes to build and deploy the code itself. Again, once the code is committed, there is an entire pipeline of building a Docker image, running the unit test and actually pushing the image to the central Docker registry. This takes a significant amount of time. And testing small features, again, it just increases the burden on time for the developers to actually be able to move faster with quality. So going through all of these things, what we actually realized was that a lot of time is actually getting spent on the developers themselves. A lot of this time that can be used for doing a lot of productive things while it is actually getting spent only on deployment challenges itself, which means that we need to have a way to simplify the developer workflow. And also it means that we need to reduce the time for rolling out features while each developer can independently operate without having dependency on other developers. With that, I'd like to hand it over to Shrinithi Maikuli who will walk you through how you've tried to solve this problem. Thanks Venkat for the brief introduction and talking about the goals of the project, we are primarily focusing on reducing the cognitive load on developers. And that is being achieved by one, having a streamlined workflow, two, having environmental consistency and three, providing a faster feedback loop from local development. The following are the key decision factors on which the solution was built upon. The first one being to rely completely on open source and have zero vendor lock-in. The next one is to make sure that the solution is Kubernetes native as our environments are in Kubernetes. The third important one is to have a hassle-free onboarding which means that we wanted to onboard application with minimal changes and also not drastically change the development or deployment lifecycle. And last but not the least, we wanted to have a cost-effective solution that will make sure that we don't burn cash in order to get the FMRL infrastructure. Our solution is lightly opinionated and is what fits our use cases best and is not a complete pass solution. So the core name of this particular solution is DevStack and this is RazerPace journey towards a better development lifecycle. So let's try to understand the solution by asking a series of question and answers and coming to a logical conclusion before the demo. The first one is on how do we bypass the CI-CD loop for the iterative development and the need is to have directly expose the local code onto the cloud environment. So as the V1 version of the solution, we went ahead with telepresence which followed a proxy-based approach. So telepresence was a client that was sitting in both the local system and the remote cluster and made sure the connection happens through a tunnel. It took care of the DNS resolution, volume mounting and also networking. But there was a major drawback due to the whole tunneling approach which was that the responses were slow, the connectivity issues were with the database and also sometimes connectivity issues with the cluster in itself and also with VPN, there were a lot of bottlenecks. So how do we avoid the network limitations and how can we ship code to the remote container without relying on the network? So we had to shift the approach towards a file sync base where we used a tool called DevSpace. So DevSpace syncs the local code into the remote container in a very efficient manner and it also does library loading by container restart. DevSpace also has put forwarding and lock streaming that provided scope for further features. As it all looked good, there was an hiccup sort of a limitation per se due to the container restarts. So the container restarts which are bound by Kubernetes Pro were flaky at times and also not completely reliable. So we wanted something that was better and faster. So the next question is on how do we avoid this container restarts? So in order to avoid the container restarts we had to put in a library inside the container that will take care of the hot reloading. So there are a lot of libraries per language like CompileDemon for Golang, NodeMon for Node.js and so on who rely on watching for the files that are changed. These are the files that are synced by DevSpace and then it rebuilds the binary and then runs the new one which is made available to the server. So this effectively avoids the container restart thus not breaking the flow. So we could have a generic Docker container per language build and use that container with the DevSpace command in order to make sure this onboarding is seamless. So all of these three questions helped us to solve the problem of local sync. So we now short circuited the feedback loop by just running a command. So next question is on how do we provide or orchestrate multiple services? How can the developers declaratively define and apply service dependencies? And the solution for that is Helmfile which is a wrapper on top of Helm. So Helmfile helps us to compose several charts together to create a comprehensive deployment artifact for anything from a single application to the entire infrastructure stack. So we define a term called service fleet here which is a collection of microservices that are required by the developer for his or her workflows. So this Helmfile works seamlessly with the existing Helm packages as all of our applications already had Helm packages and we didn't want to or need to write extra thing. We just had to wrap all of them in a single YAML file and provide it as it is given in the, in this right side of the screen. So Helmfile when took care of all the Kubernetes resources orchestration and that solved major of a problem with respect to providing Kubernetes resources like your deployment service, ingress, job, cron job and whatnot. But the application is not wholesome without the other requirements which are like for example, SQSS or databases or AWS resources which are not completely on Kubernetes. So the next question is on how do we provision FMRL infrastructure resources? So we used or relied upon Helm hooks for this provisioning. So Helm hooks provided a plug and play model to maintain the dynamics of applications auxiliary requirements. What we mean by that is we have written a two to three or per requirement base Helm hooks which can be plugged into application based on a requirement. So if for example, an application is using SQS queues they can plug in a SQS configurator as a hook whereas an application using Kafka queues could plug in a Kafka configurator. Similarly for all the other resources the plug and play model will fit in. And in order to also avoid the AWS overridden or maintaining AWS resources which was done via Terraform, we used local stack which provided a framework for mocking AWS components. So this is how a Helm file workflow will look like on running the command. The chart is being verified and it runs a bunch of pre-installed hooks which makes sure that the auxiliary requirements for the application is up and then it loads the charts, the Kubernetes resources and deploys them into the Kubernetes cluster and then does some post install books as well which can include like the English route configuration or validation of the manifest generator and make sure that the FMRL service or the FMRL infrastructure per developer is available by just running one command. So this is how we solve the problem of having a streamlined workflow for the developers in order to bring up their FMRL service fleet. So now with the FMRL infrastructure using Helm file and local sync using dev space, there is one piece in the whole puzzle that needs to be sorted which is on how do we make sure the traffic is routed to the right user service? So for that we use header-based routing our ecosystem or our Kubernetes cluster have been using traffic for Ingresses and we upgraded that to traffic 2.0 with supported header-based routing out of the box. So the traffic Ingress route configuration will have multiple rules in order to guide it to the dynamic routing. So for example, in the right-hand side of the presentation, we have two services which are API Web and API Web Trinity and based on the header, traffic will make sure that the request that comes with the header is propagated to the API Web Trinity service which in turn puts the request into the API Web Trinity deployment or apart. So this is how we have enabled header-based routing to solve the routing problem and the next set of question is on how do we make sure the upstream services are routed properly as well and we use header propagation there and we have piggybacked on open tracing where open tracing by default propagates the header and we rely on that where at every service the traffic will read the header and route it to the appropriate service. Let's walk through a use case on how does that routing work, the routing overview. For example, let's take a use case where we have two applications, app one and app two and assume app one being a gateway service and app two is an actual service that processes a request and gives a response. So we have three developers who are working on both of these microservices where developer one is explicitly working on app one and developer two is working on app two whereas developer three is working on a feature that spans between app one and app two. Now by running the helm file command the developers would have configured the infrastructure. Now let's see how the request routing happens. So developer one on passing the request header dev one in the request, the ingress route that is present in front of app one will make sure that the request is routed to the dev one instance of the app one and then the request will propagate into the app two and given that the dev one label is not present in the configuration, it will route it to the default shared infrastructure. So taking into a use case of the second developer on passing the header dev two into the request the request will flow into the shared stage infrastructure of application one as there is no instance of dev two running here and it would propagate it to the dev two instance of the app two version that is running because the configuration would be there and also in the last case when the header feature one is passed the request will be routed to the feature one instance of app one and then the feature one instance of the app two as both of these are present. So this is how the request routing will now happen across the microservices and this enables us in order to run only a subset of microservices required for the functioning of the application. All the other routing can happen smartly to the stage infrastructure that is already there and running with the header based configuration. So let's move on to some of the practical implementation of this solution and see how it works in real world and this is the demo. Let's open our terminal and run a command now which will enable us to create the FMR infrastructure. Helmfile sync is the command that is required and the command now has started to create FMR resources for couple of services and let's look into what they are while the build is happening or the deployment is happening. So we have a file called helmfile.ml which will define the service fleet. So in this case, we have used two services, dashboard, which is a front end of Razor Pay and API, which is a backend of Razor Pay and API is being written in PHP. The image here is the commit ID of the brands that I'm working on and also the same is the Docker image tag. So the image tag we use in Razor Pay is the commit hash of the brands that we are working on and just take a notice of one thing which is called the DevStack label. So this particular label holds the key for the FMR infrastructure. All of our infrastructure FMRally are created with the suffix of this particular label. So now that the helmfile has completed its job, it has created FMR resources for API and dashboard and it says how we can access it. So we'll have to either access it via passing an header for header propagation or using the URL directly which is a preview URL. The same thing works for the other microservices as well. Let's quickly check what are the Kubernetes resources that it has created. So when I do Qubesetaly, get pods, hyphen and API, we can see that there is a SchrinnyDemo that is running and also if we can just check the dashboard resources, there is also via SchrinnyDemo that is running. Also take a notice of all the other labels that are working this and this is the live infrastructure that we are running on and all the other developers are parallelly working while we are demoing. So this is the standard dashboard of Rezapay. Let's see how we can access our specific resource. So we'll use a plugin called ModHeader which injects the header into the request that go through your browser. You can also use Postman by adding this header or use CurlRequest to add the header. So let me now just refresh the page to see whether the changes of my branch are being reflected. And as you can see, the color has changed to green which is the feature that we are probably demoing. So let's go and see the code of the same branch that is there and the color is green. So now at this point of time, we have created fml infrastructure separate from all the developers working and we can access it by giving just a header. So let's just see how we can work on iteratively working on the feature from the local code. So we just change the content in the file, go to our terminal, run another command called dev space dev. So dev space dev takes care of syncing the local code into the remote cluster. So in this case, the code in user stringy the code app API is being synced into slash app slash app and also the service PHP file which I just changed is being shown as synced. So we can quickly validate that by refreshing the page and seeing whether the color has got changed. And here you go, the color has now changed to blue. So let's for some reason, I don't like this color. Let's go ahead and change it to another one and see how it will reflect. So I'll change the color or change the code in my IDE, go to my browser and refresh. So dev space in the backend would have synced the file automatically and the change is reflected in my browser. So this is how simple the workflow will be with the adoption to the DevStack.  Now for the demo purposes, we have already created another service called capital cards which deals with the cards of Razor Pay and we'll just walk through the Helm templates before going into the demo. So there are multiple deployments that are present which are your Kubernetes resources. These are the hooks that we mentioned about which will be run as either post install or pre-install. So this is a configurator which will update the ingress route. There is a preview URL hook as well. There is a secret updater hook that runs which updates the secret and there is also a SQL configurator. So this particular application is an asynchronous one with the web worker and SQSQs and we are configuring SQSQs dynamically and also having a service which is a Kubernetes resource. So now that we have already created the deployments, let's just validate that. So I'm doing a QCTL kit parts. There are the web and the worker parts that are created. You can also go ahead and see the SQS resources that are created and this is the local stack UI. So this is the particular SQSQ that is created for capital cards and this is the URL in which it can be accessed. So likewise, we have created the Kubernetes resources and also the ephemeral infrastructure resources. Let's run the dev space command in order to sync our local code into the remote cluster and on inspection while the sync is happening, let's walk through the dev space ML file. So it has multiple divisions where it replaces the parts with the DevStack Docker container that we built which is nothing but the compile demon one and then it syncs our local code into the remote and also it excludes a few parts which will optimize the syncing. So these are the files that are probably not required for the binary to work and also it has locks part where we can see the locks of the container that we have synced with. Let's see the status of the dev space command and yes, it has started to run the command. It has started to sync which is basically at this point where it synced the code and then it is running the build command which is nothing but the go build hyphen O and then it has run the binary that has been built and these are the logs that it prints in order to make sure that the debugging is easier. So let's just access this by making a call request and as you can see, the request is now reaching because I have used a preview URL. So let's just go ahead and make some change into the code which is a Golang code. So what we'll do is probably add the, add the loggers in order to print the request logging. So there are two loggers that I've commented out, I'll just uncomment it and save the file. So right now the workflow is that dev space watching these file changes has synced the file of helpers which is there here and then the same process of building and running the new binaries has happened and let's just validate that by hitting a request. And here you go, the changes that have done are being reflected dynamically in an interpreted language as well. Moving on to the additional features that are supported by DevStack. The first one is the preview URL and as seen in the demo, this creates a specific URL per DevStack label for an application by using the inverse route and the preview URL configuration is provided in the slide. The next part of it is the ephemeral databases. We currently support three different ways of configuring the database which are one, a local database where the developers run their DB instance locally and we reverse proxy the request into the local system. The second one is the ephemeral database where developers can span ephemeral databases based on the preceded data and also make sure that the schema is synced with the pre-prod environment and also have the dev migrations run. The last one is the persistent database where the developers can opt to use a pre-existing database of stage or beta or a pre-prod which is regularly controlled by the data ops flow. So the workflow of an ephemeral databases is that we copy the stable stage environment into S3 which is acting as a base and then the data container based on this will be generated and migrations are on top of it which gives an ephemeral database which is isolated from others. So are we really looking into the cost? The primary goal of us is to have a cost optimal solution. So cube generator is a tool that takes care of all the cleanups. So our resources, all of the ephemeral resources have been tagged with the TTL of six hours by default and the developers can override it based on their requirements. So generator will make sure that it cleans up the resources when the TTL is expired. And also in order to solve the requirements of ups and downs, the upscaling and downscaling we use cluster auto scaler and spot notes. We also do monitoring of all of these resources via Prometheus where we attach labels to every deployment and all of them are queried in the Grafana dashboard. So this is how the solution looks like from the angle of our tools where we have different components of dev orchestrator, cluster manager, infra monitoring and routing. And this particular diagram specifically explains us how the pre and post-dev stack will be where a sequential development workflow is replaced by multiple parallel ecosystem of things working with local sync.  We have seen a 10 to 15x reduction in time to take feature live because per feature their time has been reduced from five hours to 30 minutes and per iterations it has come down to two minutes which was 20 to 30 minutes earlier due to container builds and all the other regular process. So these are the some of the features that we are planning to go ahead and given that we emphasize on open source we wanted to give back to the community as well which is where we are recording all of the details and reference implementation in this open source set for feel free to raise issues or contribute back in order to make developers life easier. Thank you and any questions?


This figure from the IPCC starts back in 1850 and then runs up to just past 2000 up here on the right and it shows indications of warming happening in the climate system. You can see on top here the thermometer record of global average temperature showing not much happening and then recent warming very clearly. Sea level, which is given here, rises because ocean water expands as it warms and because warming tends to melt glaciers that are holding water out of the ocean. And so we see a warming influence that shows up in the rise in global sea level. And we also look, if you go to springtime, snow cover, you can see that not much was happening and then you can see it dropping and that's happening because of warming and the spring is melting the snow. And so these are among many indicators that are showing that yes, the climate system is warming.