and welcome back to Politics in Hawaii with Dennis Isaki on Think Tech Hawaii. Today we'll be speaking with Edina Kamura, a representative in the state house from Kauai and the chair of the housing committee. She is also on the Judiciary and Hawaiian Affairs Committee and the Transportation Committee, all very important committees in this legislature. She grew up on Oahu and studied public affairs and urban planning at USC and the University of Hawaii. She was a planner for a county council person managing director and is a state representative. Nadine, welcome to Think Tech Hawaii. And please tell us a little bit about yourself and why you're in politics. Thanks, Dennis. Thanks for the invitation to be on your show. Wanted to get involved in politics. I worked for the city and county of Honolulu on their transportation, doing rapid transit, a long time ago, working in Department of Land Utilization for the city. I also worked for a non-profit housing developer. So when I moved to Kauai in 92, I worked actually for you in your office because we didn't have electricity in Hawaii where I live. And that's where I got my start in private consulting on Kauai. And I did that for over 20 years. And I decided that after working on the general plan update, working on environmental assessments and developing the Hawaii Home Ownership Center, the Kauai Planning and Action Alliance, I decided I wanted to contribute to in a different way. So I ran for the Kauai County Council. I took a two-thirds cut in my pay and I ran for office in 2010 and then in 2012. I enjoyed the experience and Mayor Carvalho asked me to be his managing director in 2013. And I really loved that job. I learned so much about the county and I think we did some great things. And when this opening came up, when Rep Kawakami stepped down to serve on the Kauai County Council, I ran for this open seat, serving East and North Shores of Kauai and it got elected. So this is my third term in office and I plan to run again next year. Thanks. Ms. Benson, you're on the chair of the housing committee, which is a very important committee. So what are you working on in the legislature and your passion? Yeah. Yeah, housing is top of mind for so many families in Hawaii who are struggling because the cost of housing and how much people make in their annual salary, they're such a huge disparity. So we know that there's housing needs all across the continuum from those with extremely low incomes, very low incomes, moderate incomes, even workforce housing. So we have to have strategies for every category of needs and so we are working hard to address the needs across the board. We know what has been successful is the use of the low-income housing tax credits coupled with the rental housing revolving fund and the hula-may multi-family bonds. We also know that the federal programs like housing vouchers section eight, then we have our own rent subsidy really helps to keep people into homes and prevent people from being homeless. We also have a whole number of homeless programs that we funded, including Ohana zones that help every county to develop emergency shelters, transitional housing and the social services and wraparound services that are needed for many of the groups at the extremely low-income category. Yeah, and then we appreciate that low-income, low end of the spectrum. You mentioned moderate and workforce housing. I think we need a lot of work on that. You mentioned the low-income housing tax credit. I think stuff like the revolving funds would do good on an old spectrum, right? Like HFDC had a lot of money in there before, at about 1990, they had about a billion dollars in assets and it started coupling and all that with our friends, Janice Takashi and those people at HFDC. The sense she's retiring. So I hope we could continue to work over there. That's gonna be a big loss for the state. Yeah, it is. In a way, what do you see us working to help with the workforce housing and in that category or level? Yeah, I think what we need to do is to work with the counties and work with the private developers to help bring down the cost of developing these homes and a big chunk of it is the infrastructure costs. So we have this amazing opportunity with the Biden Infrastructure and Jobs Act that Congress passed last month that gives us a lot of funding for highways, for water infrastructure and wastewater infrastructure through the existing revolving loan funds. So what we are doing is working through the Hawaii Business Roundtable together with the private sector, working with the counties involving the mayors on each county and you need to have the whole team involved, the housing agency, public works departments or environmental services and the planning departments to prioritize the affordable housing projects in each county and then see what the infrastructure needs are and then try and target the infrastructure funds around these projects. So we're working hand in hand to deliver housing across the spectrum. It includes workforce housing and we all know that the higher you go it's actually the easier to develop because with many of the counties have now waiver programs, they have additional dwelling unit programs that help to increase density and we should be promoting more of that. And then with the waiver programs that substantially cuts down the cost of development and then it makes workforce housing possible and we need to continue the use of exempting general excise taxes from all of these developments across the board that also brings down the cost of housing. So I think it's all of these combined strategies that we need to work on to partner with the private sector and counties to make housing affordable.  One thing that might be good is when a developer has to put a project and they gotta put in thousands of feet of water line infrastructure if they have some kind of proportionate share refund if somebody hook up, you know, they're waiting for the next guy to come in and put it in or the county or the state not gonna put it in if they get some kind of proportionate share refund then guy would hook up to that. They have such a thing at the county water department before I don't know why they got rid of it. I think the current policies have discouraged the development of housing because developers cannot afford all of the upfront costs of infrastructure and always the last guy in has to pay for everything. So I agree with you Dennis, this needs to be addressed and that's why we have the Department of Health at the table, we have Department of Transportation at the table, sitting down with the counties to see, okay, with this influx of federal infrastructure funds, how can we work together to make sure the low hanging housing developments get built? We have this opportunity now to think strategically and I think we have a lot of agreement that this is the way to go. Thanks. We mentioned you're on the transportation committee tying that two together, there's the transit oriented development. You wanna talk a little bit about that? Right, so for Honolulu there's the rail line and stations and the idea is to do what every other major city with rail does is you develop densely around these stations. So you prevent urban sprawl. And so on the neighbor islands, that means building around the bus transit stations and making sure that people, if we can build more densely, build housing at all levels around these stations and around the bus transit stations, we can meet our affordable housing needs, but we have to target our resources and we need to create these mobility hubs so people can live and work where not have to have a car or not have to have the second car that most families have. We want to encourage the use of bicycling, walking, make, create these livable walkable communities to and reduce the reliance on single occupancy vehicles. So that's kind of the goal is to take advantage of rapid mass transportation to get people around and but to do it in a way that it's so frequent and convenient that people will want to use it. Yeah, it's on paper, you know, it's all good. If you have a clean sheet, you get a tangent and a hub there, slightly expand whatever build up, but then you got the wiki key, we got the ocean on one side and we cannot go out, you got the mountain on the other side and then which leads us to the rail coming in but in the way it's going to end up that like you mentioned that on the water it's mostly around the rail hubs, right? Well, the city and county is also looking, I think the new administration is also looking at other developments along urban areas that may have infrastructure capacity now. And so they're looking at both alternatives along the transit stations, but also in other areas but they're, you know, the whole idea is low hanging fruit where we can do development sooner than later because we know the need is so great. Yeah, we got the low hanging fruit but it kind of like killing itself. We talked about this before. We had the, was that park and ride parking lot which is supposed to do that, you park there, catch a bus and we took away that parking lot for low income housing. So it kind of goes against itself and against this and the hub thing where everybody parks and you don't have cars running all over. Yeah, and so I think that's what the county is looking at. From my understanding, they're looking at mobility hubs that make sense around the island and the need to do update current shuttle studies to look at where they make the most sense where it's very accessible to visitors and residents. And one of the ideas is to look at coconut market place where you've got a number of visitors who could potentially walk to a visitor center and a shuttle pickup area, get on to the shuttle and go see the island just to take different tours using a shuttle versus going around in a single occupancy vehicle and creating more congestion on our limited highways on Kauai. Yeah, you've seen the traffic red in front of the coconut market place, right? Right. And yeah, we got the county of Kauai wanted to do such a, I guess it's part of the transit and development concept at the county building, whatever they call it, but I don't think it went off the ground and there's no, nobody came in and said they want to partner with the county. Yeah, so I think there the county has decided to step back, work on their master plan and then reissue an RFP once the master plan is complete. And that's what we're doing on the grounds of Mahilona hospital and then the surrounding state owned lands. There's close to 35 to 40 acres of vacant lands and we're working on the master plan revisions right now to look at all the needs in the community, in the region. And we know there's a need for adult daycare center, assisted living, affordable housing. There's a lot of needs, even relocating the state library. So we're looking at the mobility hub concept there where this is where the bus stops and drops off people and we know the teachers and healthcare workers want to live where they work. So we're going to design it around those needs and hopefully reduce the number of vehicle trips on our, again, our limited roadways. So where does that stand right now that study on Mahilona area? So they're working on the master plan phase two. Last session, we were able to get funding for the water well and tanks at Kapahi so that they can serve additional capacity for both for the elementary school, the high school and the hospital campus and future development. So that is in the works.  So there is a consultant already doing the master plan. Yes, a consultant on board. Yeah, they got, I'm sure we'll have a lot of public input on that. Yes, and they will be initiating community meetings early next year. The top of your head, you know which consultant is doing that? Yes, PBR, Hawaii. Okay, good, good. Yeah. See, you're on the Hawaiian Affairs Committee. Well, we got, you know, leaders to Hawaiian homes. Any progress of, you know, what are you guys doing on that? Yeah, I think last year it was unprecedented the amount of funding, capital improvement funds that DHL received from the state. It was close to $70 million to carry on their program of developing house lots for our homeless, excuse me, the DHL, the Native Hawaiian waiting lists. We are also interestingly working with OHA, DHL and how to prove counselors to figure out how can we get our Native Hawaiians ready for rental and home ownership opportunities over the next five years because of the funding that the legislature has put into affordable housing, there's going to be 8,000 units of affordable housing on the market. And we need to get our Native Hawaiian communities, many who are homeless, many who are living in overcrowded conditions to be prepared for home ownership or rental housing. And so we have this initiative working with OHA to get resources out to the how to prove counselors to be doing the one-on-one counseling and the homebuyer education to prepare our families for these opportunities. And then we're also working with the University of Hawaii, UHERO to also create a housing database so that we have real-time information on housing opportunities, both rental and for sale opportunities by county, by districts, so people can do searches and understand what the opportunities are currently and in the future. Yeah, Kauai, HHHL has a lot of property in the thousands of acres, it also got some hope developed, lots, you know, roadways and utilities put in, but it's vacant from what I understand, you know, people who cannot qualify for housing like to put in their own housing, so maybe they get a department that has to put in the housing or something. Yes, you get to look at all aspects of that, as you mentioned.  I know the Anahola Homestead Association has worked on a prototype for a tiny home. There's, you know, different opportunity, Habitat for Humanity is doing an amazing job. When people put in their own sweat equity and bring down the cost of housing, I think that's a really great model for Kauai because they have such amazing capacity and it's a great model for the whole state. Yeah, especially at Kauai, they're doing a great job. I think they've run it in some other places, like Anahola. You know, in LA, LA, they're building a three bedroom, one or one and a half baths home a few years ago with a mortgage of $240,000 at the time of closing, that home was worth $400,000 and today it'll probably be worth 600,000 bucks. So this is how we build our middle class. This is how we build housing security. And we know that the Habitat model also builds community because families are working together. They go through this hard period of working on each other's homes. They learn home ownership skills and they have a built-in community when they're done. So it's a reason why last session I introduced the Affordable Home Ownership Revolving Fund and that passed and this is to help programs like Habitat do more of what they're doing because they're doing it so well. Yeah, like I mentioned at Kauai, you get Steven Spears and Milani Pimentiali. So now other organizations and people want to partner to help them get more people in houses. Yes, and I really like the motto. I think it'd be great if we could do more of that on Hawaiian homelands and other infill housing and large-scale subdivisions like they did in LA LA. I know Claudia Shea and self-housing was doing stuff like that before, right? Yes, and they continue to do it in, non-coolly they bought a whole subdivision that went through foreclosure during the last recession and they are building these fabulous two-story homes that have these million-dollar views and they are likewise quite affordable under $400,000 per unit. Yeah, that's great, that's great. Yeah. You served on a lot other than a part of the commission before. Were you on HFDC also, before? I did, I think I followed you. You left, I was lying. And the Hawaii Tourism Authority. Okay, a little bit, I'm gonna talk about tourism and where do we go from here? Sure, I'm very happy with the leadership of Hawaii Tourism Authority in pivoting from promoting tourism to destination management. And yes, we do need to promote tourism but we also need to manage the impacts of visitors in our communities around the state. And I think I see a real commitment to doing that. Every visitor bureau has now hired a destination manager and each has a pot of funds to now implement their destination management plans. I think what we did in Haina State Park is a great example of how we bring community, the county, the state and the visitor industry together to do problem solving.  And luckily, and then the flood happened and we've had resources to implement the Haina State Master Plan and our shuttle plan. We were super fortunate to have the 100% support from the state deal in our parks division. They put together all of the improvements at the park that were devastated from the flooding event. And then we put together a parking reservation system and several of my bills passed that increased the parking fines from $35 to $235 because of the illegal parking. And then last year, a few other bills passed that helped to increase the entrance fees based on peak demand. And then we also allowed the county police chiefs on every island to hire non-police officers to do parking citations on state highways. So those funds go to the counties for enforcement. Understand that tourism was in the past few weeks was really low in the Waikiki area. And now it picked up only because of the military water fuel problem, right? That's a big issue. I mean, they're filling up the hotels in Waikiki but what you got to say about the fuel issue at Red Hill? Yes, I believe that many of the state legislature signed on asking the military to remove those underground fuel storage tanks and to address this concern. Yeah, there's about 2,000 families that are eligible for hotels in Waikiki until January of next year because of this issue. And it's a major concern. I believe the state needs to have in-state water testing facility that we should not be spending five days or a week sending samples to the mainland, to the West Coast to figure out the quality of our water. We need that capacity. And when I was managing director, we had a similar problem in Lihue with I think it was bacteria in the water. And again, we had to wait five to seven days to get the test results. Well, no, you told me we had bacteria in the water. No, I'm just kidding. I think we, they were great. They sent bottled water to families impacted and the water department on Kauai did a great job as well, getting the word out. I think it was in, I forget whatever, but it was, we need that capacity in state. We should not have to wait and get lost packages in the mail and then wait longer for this result. I think it's a public health issue. I believe the legislature will be addressing this issue next session. Okay, thanks, Lidhi. And I just see a note like our time just running out. Any last words? No, just thank you, Dennis, for this opportunity to talk story with you. It's been a while, so it's been fun. Thank you for having me. Thank you. Thank you, Nadine, for joining us on Think That Kauai and thank you to the listeners. Mahalo, aloha, ahoy, ho, and happy holidays. See you next year.


Welcome to this lecture on field programmable gate arrays in the course digital system designed with PLDs and FPGAs. In the last lecture we have looked at the interconnection technologies, design methodology, what is the tool flow and what are the commercial tools available etc. And just started with the vertex CLB architecture. So we will have a quick look at the slides and move on to today's portions. And so last time we said these are the three programmable interconnection technologies. And SRAM uses the pass transistor as a switch with the gate status stored in a flip-flop which is arranged as SRAM so the name SRAM. And the flip-flop consists of cross coupled inverter which occupies 4 transistors, the right transistor and the real switch it consists of 6 transistors quite big. And that is why the cells are made, the logic blocks are made big. And flash transistor is a normal transistor with a floating gate which can be turned off by trapping electrons. It can be raised electrically with the polarities opposite to that of the writing. And antifuse is where between the wires in the layers within the wires something is deposited. And normally it is not conducting and when you apply a voltage it conducts, it is not an active switch it is a passive connection which is one time programmable so very small area because it is the wires you need to interconnect layers of wires I mean between the layers. So in that wire the deposit is made so though the transistor is required to isolate the voltage applied to fuse it but it is very small delay in the small area. And that is the kind of summary we have seen the SRAM is as need to be programmed each time it is powered on but it is non-volatile but it is large delay and large area. Antifuse has very small area, small delay but it is non-volatile one time programmable. Flash comes in between is non-volatile reprogrammable, large delay the medium area. So most of the FPGA vendors use SRAM because it is I mean there is no limit on the reprogrammability and the technology fabrication process you know yes etc okay. And the SRAM based technologies you make the logic block big because the connections are costly if you make it small then the connection the switches and associated circuitry will be quite huge in comparison with logic. The antifuse vendors will make the logic block small so that less is wasted but here as I said they will make sure that nothing is wasted there will be lot of kind of configurability that things are can be used partially split into 2 parts and things like that or you can use a combinational and flip flop separately put it together all kinds of programmability within the logic block is given. And this shows a coarse grain architecture with a 4 lookup table and 2 slice and this is just a fine grain logic block of actile which is a kind of 4 to 1 multiplexer essentially. We had looked at the design methodology we start with the HDL source do functional simulation synthesis generate the net list then you do logic simulation then you go for the place and route you can specify the IO constraints and timing constraints you can do a timing analysis which is quicker than timing simulation ultimately you can do timing simulation and everything is fine you can program iteration is here like you iterate here then you come down iterate then you come down through static timing analysis you can iterate then ultimately you can iterate through timing simulation then ultimately program it. We have seen the commercial simulators, commercial synthesis tools and vendor tools which has everything in it quite good most of the vendor tools are good and these are the commercial other kind of very you know complex EDA tools suit and each consists of lot of packages within and you can do synthesis and simulation with it but the place and route you have to go to the vendor tool. So let us come to today's portion we will look at the this particular FPGA silence vertex FPGA it is not commercially kind of manufactured now it is probably only supported but this was a kind of I choose this as a kind of basic on which you can build other kind of architectures you take the latest part and seek so vertex 7 if you understand this well and you can you know understand other FPGAs the FPGAs from silence itself and from other vendors. So this is a summary basically it is an SRAM based programmable connection and configuration the lookup table is used as a combinational logic you have flip flops within the logic block with synchronous and asynchronous set or reset large configurable logic block it is quite big then you have dedicated memory called block RAM okay which can be configured as single port dual port FIFU and all that lookup table can be used as memory we will see that the there are clock distribution network which is called clock trees which are low skew once again we will see why it need to be low skew. There are DLLs and currently the FPGAs use PLL but this is a dedicated component you have to instantiate it or from the core generator and you can use it then you have tri state gate for forming the buses may not be available in the current FPGAs you have carry chains we will see what is carry chain or carry logic cascade logic then there are various configuration schemes the serial parallel jet tag and all that there are IO blocks and which support multiple IO standards okay. So, this is the kind of a top level view of the vertex FPGA I will not go into specific of this first thing to note is that all around is IO block and you will have the PLLs okay now in this it is DLL but there will be PLLs okay and inside will be the block RAM CLB that is the block RAM is a dedicated memory CLB is a configuration logic block and so on okay this sandwich one after the other. And the recent FPGAs you will even find the DSP blocks which allows basically the fixed point arithmetic you can have a fixed point addition or multiplication and things like that. So, those blocks will be built in to the FPGA then there could be some recent FPGAs might have the ARM core ARM processor core built in some might have some memory controllers built in and so on okay. So, that is in a nutshell the top view of the vertex FPGA and there are many things to look at the FPGA but Lammable interconnection these logic blocks and all that but like if you take the memories then it is kind of it comes in kind of say you know built in and you have a tool to kind of instantiate this in various width and depth and so on. So, there is I mean there is nothing much to kind of worry about it I mean you have it use it okay though there are minor quirks which I will mention as we go along and but one thing which we will go little deeply is a configurable logic block but that is where the main functionality get built in okay. So, we will look at this little more detail because there you can do a lot of optimisation you can understand you can debug you can you can find why certain things are happening and things like that okay or why it occupy so much area so much more area so much less area and so on. Like when you have done a design you look at the resource utilization you are wondering why it has taken so many look up table. So, you will be able to figure it out at the end of the lecture. So, we will look deeply into this CLB touch upon the other standard things the basis. So, let us come to this vertex configurable logic block okay. So, a configurable logic block is this this is the top level schematic of the manufacturer this is taken from the silencer datasheet and it has two identical slices silings called as slice. So, this is a slice and this is another slice and within one slice you have two identical blocks okay. So, one CLB is two slice one slice has two parts which is identical okay. So, now the one part if you look at it there is a four input lookup table and there is something called a carry and control we will see what it is and followed with a flip flop okay. So, the lookup table is used as a combinational circuit this is used for combinational circuit implementation and this is for registering. So, you have say a data path with say register then combinational circuit and register that is implemented like that okay things like that okay. So, or you have a next state logic with input then the present state somehow fed back through the wire back here and the next state is loaded to the present state okay. So, you get a get my point. So, that is what it offers. So, we have seen what is a lookup table in the case of like when we have discussed the symbol PLDs okay. We have seen that the symbol PLDs evolution was starting with the prom. So, at that point we have looked at how the memory can be used for Boolean function implementation. I hope you have seen that lecture if you have not seen I will briefly explain. So, that it is you do not have to go back in search of the lecture particular module. So, let us look at the lookup table as like lookup table is nothing but a memory okay. So, suppose we have this particular Boolean function x, x or y to be implemented okay. So, how that is implemented is that you take a two address line memory that means four location memory because there are two variables and we have to implement all the minterm. So, x, y as x bar, y bar, x bar, y x, y bar and x, y. So, you take a two address line or four into one memory and what you do is that you write the truth table of this function into the memory okay. So, the truth table is that the 0, 0 is 0, 0, 1 and 1, 0 are 1 the 1, 1 is 0. So, you write that in that particular location. Now that writing like that writing is you can say configuring the lookup table or programming the lookup table. Then so, when you write to the memory that is in the right mode that is during the configuration it happens. Now you want to like as a user you want to use this as x, x or y put the memory in the read mode that means it is reading the data line is taken as the output okay x, x or y output or y is equal to or z equal to x, x or y. Now what you do is that you give 0, 0 then it goes to 0th location and you get 0, 0, 1 goes to 1st location 1, 1, 0, 2nd location 1 the data line and 1, 1, 3rd location 0. So, you get the picture. So, you program you take if you have n variable implementation you take 2 raise to n into 1 bit memory then program the truth table of the whole function in the locations okay in the memory location put the memory in read mode connect the variable to the address line okay like a1 and a0 the way you program you have to connect and use put the memory in read mode you use the data line as the output okay that symbol as it is. One advantage with this is that you can program any function of two variables like it is so flexible that if you take you want to implement and or x or nor everything is possible. So, that is the kind of flexibility of the lookup table when we have discussed the prom you have said that is an overkill because there the prom was containing lot of locations it was a very wide kind of implementation and then it wastes lot of kind of location and for that particular application it was using basically address decoding it need only one product term and we were implementing quite a number of them. So, that was a waste but here it is only few lines and all the functions can be implemented. So, thing to remember is that writing to the memory is while configuring and that write control is controlled by the configuration circuitry of the FPGA but as a user you use the memory in the read mode with address line connected to the input variables and the data line connected to the used as output and as I said in the prom case it is a fixed and which consists of all the min terms and this is nothing but a programmable or because this is an and or we are implementing an or of this which is programmable okay. So, I want to tell you before going further when we say we are programming an FPGA or a configuring an FPGA it means essentially writing to configuration memory okay and so all the interconnection patterns are configured here very specifically when you are configuring the logic blocks and writing to configuration memory configures everything possible. Now all interconnection all logic all special resources everything but when within a logic block there is lot of things to configure one is writing the lookup table with two table like you are using lookup table as a Boolean logic implementation you write the two table sometime a lookup table you need more inputs then you can combine the lookup table and that need some kind of additional circuitry to be configured that is also done through the configuration then lookup table is nothing but a memory. So, we are using the memory as a combination logic implementation but you could use it as a memory also if it is not being used to implement the logic you could use it as a memory we will discuss that to the flip flop you can select number of clocks maybe more than the CPLDs you can do the set and reset of flip flops and there are lot of multiplexes within the logic block to make you know various programmability various to make it flexible and all that is programmed these MUX paths are programmed by writing to configuration memory in addition you can configure the memory FIFO PLL all that like there could be memory blocks which is combined to make a larger width or larger depth all that combining is done through various extra circuitry which is configured using writing to the configuration memory and all programming the interconnection and the IO blocks there is programming available for using it as a output input IO's and so on so all that is done. So, when we say FPGA configuration of programming is not merely the interconnection of the block there is lot within the blocks okay lot to do with the special resources and quite a bit in the IO blocks and we will see all that one by one and when you start looking at the data sheet you will be looking at a family you will have a family of devices which goes from low complexity to high complexity okay and very important specification as far as you know as far as an FPGA is concerned is this one the array of logic blocks okay how many logic blocks are there okay. So, you take this particular 100 device XCV 100E there is an array of 20 x 30 600 logic blocks okay. So, when it comes to the largest device it has around 104 x 156 logic block and in the recent FPGAs and this is just you know see it is just 100,000 if you multiply. But if you look at the current FPGAs it may be having 2 million logic blocks and things like that. So, one important and we are going to see what is inside the logic block. So, one important spec you need to look at is this the number of logic blocks okay. Now, again you can disregard this logic cell because you see the 20 x 30 600 and we have seen is that there are 4 identical kind of logic cells and 604 is 2400. But you know they have shown some little bit of a you know kind of scaling up to accommodate the extra overhead circuitry which itself can be used sometime because there are some overhead circuitry used to combine the logic resources. But at times that itself can be used for some kind of logic implementation. So, they include that also as part of so, instead of 4 multiplying by 4 they multiply by 4.5. But anyway the understanding the architecture important spec is the number of CLBs. Definitely the number of IO pins there could be single ended IO differential IO like you want more noise sensitivity you can use or you want to reject the common mode noise then you can use a differential pairs. And another important thing is the block RAM bits how many dedicated memory is available. So, here around 81 kilo bits are available when it comes to the last point nearing 1 megabit is available okay. And this distributed RAM bits is again something to do with the CLB array. So, this can be calculated from the CLB array spec. So, not a big kind of spec. So, I would say that the important thing to look is the number of CLBs, the number of pins, number of block RAM okay. And when you are encountered with the latest FPGAs definitely you have to look at the number of PLLs available maybe number of the DSP blocks available all that okay. So, I think you can extend this but there are things which is not useful is that the number of like system gate, logic gate these are the equivalent gate counts. And it is not very clear how that is calculated. And it is maybe you can use it to you know kind of decide between the kind of within a family okay. But there is no point in comparing the system gates of one family with the other or one family from a one vendor with another chip from another vendor the doesn't make much sense. And just saying coding big numbers saying that 1 million or 100,000 200,000 one shouldn't choose FPGAs depending on these system gates and logic gates though it is an indication of the complexity. If you understand well then you can kind of judiciously you know make your decision objectively knowing the architecture and knowing the essential specs. So, basically I would say at least in this case the CLB array, the block rampage, user IO, differential IO all that the important spec in the recent in the current FPGAs you can add DSP blocks, the number of PLLs any other dedicated resource which is available okay. So, let us look at the CLB itself. So, as I said one CLB has two identical slice and one identical slice has two parts. So, we will concentrate essentially on this. So, it has a four input lookup table. So, that means you can connect any four variables like ABCD implement any function of the ABCD and there is no optimization involved okay. There is no when the number of variables are four or less is absolutely no optimization just write the truth table within the lookup table okay. Then it works okay but if you have more than four there may be different ways of handling it. I will give you some possibilities and you can see that the output is going to the flip-flop and flip-flop has D, Q, the clock set synchronous preset and you know the reset okay. And there is something called enable clock we will see what it is okay. And one thing to note is that it is not necessary that the lookup table output should directly go to the flip-flop. Sometimes we want to use this as a combinational logic which is combined with other combinational logic to implement complex functionality or you know like you would like to take it out directly to a pin okay whatever it is. So, that is possible like you can see that that path is directly going out. In that case the flip-flop can get wasted okay. This picture is just a kind of like top level schematic we will go into detail okay but like just I want to illustrate not like the connections are not that correct. And this you see this input which can go in principle to the input of the flip-flop. So, like you could use the lookup table separately and the flip-flop separately or you can do it use it together okay. So, that is one kind of level of programming. So, what we are going to do is that we are going to look at the blow-up of this one slice so that we can understand it little more deeply okay. Now, that is one slice at the beginning it looks little intimidating but don't worry. So, let us look at say these are the identical part this is one part and this is a second part and you see there is something shown here which is there on top of this also but we will sorry this is common for both lookup table. So, we will see what it is and there is something in between here we will see again what it is all these okay and there are two flip-flops okay. So, the first thing I said is that it is possible that you can use the lookup table output you can implement any function of four variables A, B, C, D and the output can go to a flip-flop to implement a data path or a sequential circuit or whatever. But if it is a case that you want to use it separately like you want to give A, B, C, D, Z is some function of A, B, C, D and we are taking it out and we are giving from the wires interconnection wires some input directly to the flip-flop and take the output it is possible. So, it can be used together it can be used separately okay. So, let us go back to the slide the main diagram and you see this lookup table there are four inputs one output okay. Now, this one output goes here you can see it can go through this 2 to 1 MUX to the flip-flop. So, this is combined with this flip-flop or if you are not kind of if you do not want that you can take it directly outside okay. When I say you can definitely you are going to write some HDL code which is going through a synthesis tool it will be synthesized. Ultimately it will be placed and routed within this particular circuit block. So, the tool does it but then that is how it you know the things happen. But suppose you use this lookup table independently of the flip-flop then this flip-flop can be used separately you can see that this pin BY this signal BY and that directly can be taken to the input of the flip-flop and the flip-flop can be used separately okay. So, this you can combine with the flip-flop or you can use it separate in that case a flip-flop can be used separately okay. Same thing here now you can see here independent or to the flip-flop and the BX is used as an input to the flip-flop it need to be used kind of separately okay. So, that is what it is about. Now, mind you you should not lose the global picture this is only one slice there are two slides in a logic block and you should know that there are lot of vertical wires here horizontal wires there are switches here. So, and there are input connections from these wires coming into this part all these parts you can connect these wires here that is the meaning of it. Similarly, these output can be taken to the wires again and can be taken to other logic block that picture you should not you know you should have in your mind. Now, the question to ask is that suppose we need 5 input lookup table okay. Say we have a 5 variable Boolean function how do we get a 5 input lookup table the question is that can we get implement 5 input lookup table using 4 input lookup table okay. So, now the thing is that the 5 input lookup table need 32 locations okay because 2 raise to 5 is 32 4 input needs 16 you know 16 locations so it has 2 raise to 4 16 locations. So, it looks possible because you have 16 locations here 16 locations here so how to combine that you know. So, one idea is that when the 5th because you can connect only a b c d maybe you have a 5th variable. So, one idea is that when the variable the 5th variable is 0 program the lookup table here and choose the output of this first lookup table as output when that third 5th variable is 1 that lookup table can be here and that should be used there. So, that suggests a max 2 to 1 max in between the select line of the max can be used as the 5th variable. So, that is how the 5th like 5 input lookup table is built. So, you have a 4 input lookup table you write a b c d and here another 4 input lookup table 2 outputs are maxed through a max and in the case of vertex FPGA it is called f5 max and the select line of that forms the 5th variable because I0, I1, I2, I3 are the 4 variable this is the 5th variable when it is 0 that part of the lookup table is here when it is 1 that part is programmed here and a b c d is common here E is connected here okay and this is the output of the 5 input lookup table. So, we will go back to the diagram of the slice and you see here this is the output of the lookup table okay and the first top lookup table and this is the output of the bottom lookup table you see that there is a 2 to 1 max which is called f5 and the select line here and f5 output goes there and the select line is here. So, you have bx and this is the 5th variable. So, if you have a b c d e then you can say a b c d here a b c d here and you connect e and you can see that you get a 5 input lookup table output that can be registered using this particular flip flop okay or it can be taken out directly out okay. So, that is how the 5 input lookup table is formed okay and you can ask the next question can we form a 6 input lookup table because you have already using a slice. So, this occupies now one slice okay you should remember that. So, within a slice you have 2 lookup table 1 lookup table is 4 input but you can combine 2 4 input lookup table to make a 5 input lookup table that occupies a slice. So, the next question is that suppose we have another slice here which has like another 5 input lookup table can we combine them like 2 5 input lookup table to make a 6 input lookup table okay. The answer is yes we have yet another mark. So, we have like we can do this is a 5 input lookup table this is a 5 input lookup table. Now, you use a 2 to 1 marks between the output of 2 f5 marks we call as f6 marks the select line of that is the 6 variables. So, you have A, B, C, D, A, B, C, D here is same for both because like when E0 you program here E1 program here E0 program here E1 program here and f like when it is you know f when it is 0 you program this section f1 it is this section. So, it goes like that f0 is program here f1 is program here okay and in that f0 when now E0 is program here E1 program there and when f is 1 E0 is program here E1 is program here okay. So, let us go back to the slice diagram from the silings and you look at this assume that we have combined this lookup to lookup table to 5 input using NF5 and assume that there is a slice before I mean behind that or before that that could be coming from the same logic block or a different logic block does not matter. And now you can see that that is assume that f5 output is coming here okay in the case of a single CLB this f5 output is connected to the f5 input of the next slice. So, that is coming here and you see this f5 output and f5 output of the previous slice is combined in a f6 MUX the select line of that can be used the BY can be used to use for the 6th variable okay and that f6 MUX can be directly taken out or can be registered in this particular flip-flop okay. Only disadvantage is that if you combine if you make a 5 input lookup table then you cannot and if you are using taking it out directly you cannot use this flip-flop input separately because the B axis is already used as a kind of the 5th variable. And similarly if you are implementing a 6 input lookup table this select line is nothing but BY so then this flip-flop can be cannot be used separately. So, that should be kept in mind. So, in a slice you can have 2 4 input lookup table or a 5 input lookup table in a CLB because it has 2 slices like 1 5 input here and 1 5 input here which can be combined to make a totally a 6 input lookup table okay. So, that is what we have discussed okay. Now like when we say okay this should be kind of understood when we are when I say 5 variables like we mentioned that you have like ABCDE like you have 5 variables then you implement that using a 5 input lookup table using an f5 MUX many a times it is not required okay or you say you have a 6 input 6 variables then necessarily not necessarily that you have to go for a 6 input lookup table for implementation. You could in some specific cases you can cascade lookup table okay depends not like this when we say consider all possible min terms okay. But in specific cases of 6 input lookup table it can be implemented using cascade of 2 lookup tables okay if you build a 6 input of lookup table from 4 input you need 4 of them because 2 4 input combines to 5 input lookup table and 4 4 input combines 6 input lookup table. So, like in specific cases say take an example here okay let us take an example say this is a function we want to implement y is ABCDE or ABCDF okay. So, you we have now 6 variables ABCDE ABCDF okay.  But there is another way of simplifying it you see ABCD is common. So, we take ABCD out. So, it becomes ABCD and e or f okay. So, what we can do is that we can say ABCD is x and y becomes x and e or f. Now what we can do is that 1 lookup table is used to implement ABCD which is x okay x and output of the lookup table is connected as the input to the next lookup table. And then you connect e and f and you implement this x and e or f here. It does not matter because we have seen that any Boolean function of the up to 4 variables can be programmed in the lookup table. So, this can be easily implemented. So, this is 6 input but it can be used it can be built using 2 lookup table instead of 4 lookup table that should be kept in mind. And of course disadvantages that there are 2 lookup table delay you encounter when you implement like that. But if you maybe like if you implement like this then it is nothing but 1 lookup table delay plus the FIMUX delay which will be less than this lookup table delay not much of a problem because many a times in FPGA what dominates is in the connect delay and in any case we have saved 2 lookup table which is quite precious okay. So, that is how it can be done. Similarly, you can use say 5 input instead of using a kind of 2 lookup tables you can using FIMUX you can kind of you know combine cascade 2 lookup tables and a b c d e can be implemented as a b c d and e and we implement a b c d as x in a lookup table. And x is cascaded with the e using another lookup table then you get it okay. You do not need an FIMUX you can use a cascade but there are cases like you know you see this particular function a b c d x or e okay. Now like we say a b c d z that means we have to expand it becomes z x or e that is z e bar and z bar e okay. There is nothing common like when it is e bar it is z and when it is e it is z bar okay. So, you cannot have a common lookup table to cascade you need real true 5 input lookup table. So, you are forced to use this architecture. So, this can be expanded to 6 input case also. So, there are 6 input functions you can come out with which definitely needs the 4 4 input lookup table or 1 real true 6 input lookup table then cascading. So, these are various kind of these are all are done by the tool. What I suggest is that you have you know the VHDL I will demonstrate the kind of the tool towards the end of the course and during the case study and that time you can write all these and see how it is fitted and you can even see how things are routed within going to the floor planner tool to see what is happening inside the lookup table and all that okay. I will illustrate that maybe I will at least show you I may not take this code and show you but then I will show you in general how you can view the floor planning. So, this all can be tried you know that is how you learn you try out something and then you see what is happening within the device. See there is one way of most people kind of take the tool as it is and you tool has lot of features.  If you try to understand little bit detail by playing with the code by playing with the design by playing with the tool option analysing the various output trying to figure out what is happening inside then you will get a deeper understanding all that the report churned out by the tools make sense to you and much more than that you get ideas how to optimise okay. Maybe that inside okay many a times the tool vendors try to incorporate all that back to the tool like any special insight which is kind of you get it from you know working out with the various examples they try to incorporate within the tool they make try to make the tool smarter. So, maybe like if you have such insight then that should be you can be communicated you can if it is not known it can be published and the vendors will take note of that and they will try to improve their device tools and so on. So, that should be kept in mind. So, let us come back to the slide and this is what we have seen. So, in a summary vertex CLB the lookup table and flip flop can be used separately or together it has 4 4 input lookup tables 5 input lookup table can be built from 2 4 input lookup table using F5 marks 6 input lookup table can be built from 2 5 input using F6. So, essentially it is a 4 4 input 2 5 input or 1 6 input lookup table of course you can do cascading and the flip flop you have set reset clock enable and you can one advantage of certain reset is that you can initialize the registers to any value you do not have to say at the power on everything need to be 0 ok. You can have 8 bit register you can say at the power on it should be loaded with the x value say 3a like that. So, that adds a lot of flexibility like when you build complex function you might have some default register values at the power on that can be easily kind of implemented using that. So, okay now when we look at the slice diagram one thing you should notice that when we use lookup table as a logic the read part of the circuit is available to us ok. The address lines are we connect the address line to the various signals input signal data line is used as output and this memory is in the read mode ok. Now, this memory is written during the configuration that means that the right control of the lookup table is through the configuration circuitry it is not available to the user ok at least at that like if you say it is dedicated right circuit then it is not available to the user. But it may happen that this is nothing but a four address line memory. So, it is 16 into 1 bit memory ok. Suppose you have an FPGA 50% of the lookup table is not used as logic and you have used all the memory the block RAM for some kind of as a memory and you want little memory. But if you look at it lot of lookup tables are lying around they are memories but you cannot use it because the right circuit is not available to the user ok. So, what the Xilinx or other FPGA vendors do is that the right circuitry is made available to the user ok. Now and you can use this you can see that this is the right enable and the data input because this is like internally you can assume flip-flops the flip-flop output is MUX to the you know the O and the select line of the MUX is the address line ok the read circuit. But this is the input to the flip-flop the D is of the flip-flop ok. Again it is connected in bus and this address can be used to decode the input flip-flop ok. So, that circuit is made available so that if this lookup table is not used as a for logic then it can be used as a memory ok. So, normally what you do is that you go to core generator which allow makes available the standard cores. So, you can instantiate the distributor RAM and sometime what you do is that you write in VHDL say case statement like you say case on say ABCD and you say 000 output is something 001 output is something else for all the 16 possible values. Then this is an you know ideal candidate to use a distributor RAM and it is put it in the lookup table. You might ask what is the difference it can be treated as logic but yes any it can go to block RAM also it is not that it is it need to come to the distributor RAM. But then we are discussing that if the lookup table is not used as a kind of logic for logic implementation it can be used as a memory and since it is distributed it is called distributor RAM. Because it is all over in a block RAM it is in a one place but in a distributor RAM it is implemented you know it is distributed ok. Now you should know that there is a slight issue with it and the thing is that when you have address line when you have lot of separate like particularly you combine suppose you want a 16 by 16 memory that means 16 location 16 bit. Then you have to parallel 16 of the lookup table to get kind of 16 width of the memory. It may happen that you might assign the pin somewhere here some lookup tables are close to the pin and some are away from the pin. So the read latency may be different for the different lookup table. And you will see if the read is not synchronized which is usually the case you do not synchronize the reads you could synchronize the read using the flip-flop. If you do not then you will see the variable latency and if you use it for some precision say like you are trying to generate a waveform using a DAC then you will find a jitter ok. So you should keep that that may not happen with the block RAM ok which is many a times output can be synchronized. But you keep this in mind you know you use it distributed RAM as a huge memory which is spread across and the read is not synchronized then you might get variable read latencies. And in some cases it can affect your implementation ok that you keep in mind. So that is what is shown in slide. So you basically you have a lookup table and now there is a block which is a lookup table right which is normally controlled by the configuration logic. But now it is those wires are made available to the outside so that user can connect their signals to use it as a memory. And that is in the logic block in the slice diagram this is what is shown here ok. You have the address line, the data line, the clock, write everything is here. So you can use it as a distributed memory. So let us look at the this issue. Now maybe I will introduce that so there is a carry chain within the FPGAs slice. Now you know the equation of an adder the sum is for any particular index say si is ai exclusive of bi exclusive was c of i ok that means if it is a7 is a7 x or b7 x or c7 this is a full adder ok. And you construct a ripple adder by cascading the full adder and if you look at the carry i plus 1 is nothing but ai bi that means if both are 1 then the carry is 1. Or a exclusive of bi that means either of them is 1 then if the carry input is 1 then the carry output is 1 ok ai bi or a exclusive of bi and ci and many a times we simplify it simplifying it by an inclusive or ok we say that ai or bi ok. It is a bit of redundancy because when you say ai or bi it includes 1 1 also it is not 0 1 1 0 1 1 but it does not do any harm because 1 1 anyway generates a carry. So that is a bit of redundancy but we will look at this particular the correct optimised equation because it enables us to implement a carry circuit. Now if you try to implement a ripple adder using full adders in an FPGA and suppose we are trying to implement this using the lookup tables ok.  Now combine the c1 and this s0 sorry c1 with a1 b1 to get the sum 1 and another lookup table for kind of c2 ok. So essentially what is happening is that you need 2 lookup tables per the full adder and all the interconnection is going to make everything slow. So if the addition is slow the multiplication you build using the addition will be slow ok. So that is one issue so if a separate lookup table is used for the carry logic then the interconnection will slow down the adder and it will slow down all arithmetic operations. So what is normally done is that this carry is kind of built in the carry logic is built in to the slice. So I will describe you the idea how it is done then we will go to the slice. So there is a lookup table what is done is that there is some additional carry logic which is part of the lookup table ok. So every lookup table you take will have a 2 to 1 MUX like this connected like the select line is connected to the output of lookup table and one of the 2 input is going to the input of the MUX and this output of the MUX coming from the previous section is connected to the input of the MUX and output of the MUX goes to the input of the top MUX ok because this comes from the bottom and this goes to the top MUX ok. There is a MUX here with the lookup table and this is an XOR additional XOR gate which is used for full adder implementation. It can be used for other purposes also ok if it permits if that kind of location permits then you can use it and the lookup table output is going to the XOR gate input and this is available as output ok. Now this implements the carry equation we have seen. So this CI plus 1 AI BI plus or AI exclusive of BI and CI that is implemented sorry that is implemented here ok. So how it happens is that you give AI BI here ok and that is AI exclusive of BI that is going to the select line of this and this is this part and AI BI is this part ok. So that is the carry chain basically. So we are coming to the kind of the you know end of this part of the lecture we will continue with the carry chain. So what essentially we have seen today is a detail inside a slice or inside a logic block we have seen the lookup table flip-flops combining the lookup tables for various you know higher level complexity cascading them and using the lookup table as a distributed memory. And now we are looking at the carry logic which kind of speed of the arithmetic operation. So please have a look at this the lecture notes you can look at the data sheets you can even look at the data sheets of other FPGAs I suggest you look at the Spartan 3 FPGA data sheet the logic block diagram which is identical. And once you master it you can go to Spartan 6 or Vortex 7 and so on. So please revise we will continue with this in the next lecture I wish you all the best and thank you.


I am going to be testing out the sexiest things that men can do to their girlfriend. Okay. It's kind of hot in here, isn't it? Yeah. I need a handyman. I can be more than just a handyman to you. Damn. I'm just chilling here. Guys, we got to cover up for the camera. They look really pretty. Anything you want to just talk about? Whatever you're wearing right now is just not passing the vibe. I don't even know if I can get that renovating right there. No! What's up? Did you, uh, fall from heaven? Because, uh, you're looking like an angel, what? Did you wash your face today? What? No.  Okay, wait. That's mean. It's supposed to be a pickup line.  You have crusty. All right. Fine. Fine. You want to play with that? Hey, uh, did you fall from heaven?  What is up, Momma Squad? And welcome back to our channel. Guys, as you can see by today's title, I am going to be testing out the sexiest things that men, I'm a man, can do to their girlfriend, their wife, their fiance, no matter who they are. As long as it's their lover, the sexiest thing that you can do to them. And I have no idea what he's going to do. Basically, I'm just going to rate and see what I think is the sexiest to me. Oh, I can't even wait to get into this video, guys. I'm not going to do a long intro just because I've been looking up stuff to do to Mariah all day, and I have an arsenal of stuff. If you're not in the mood by the end of this video, Mariah, this is a fail for me. Let's see, do you think Mariah is going to be in the mood by the end of this video? I don't know. I think she will. Guys, before we begin, make sure to like this video up for me and subscribe if you have not already. Also, our merch is still out, and I think there's a fall discount going on, so make sure to go in our description or go to the merch shelf below this video after watching and grab it because it's lit, and we have so much on there, and everyone has been getting the merch and loving it. But without further ado, let's get on into the video. You're not. Ew. You're not going to go through it. Guys, it is freezing in this room. Already a bad start. Turn me on, babe. What? That's the one thing, you know, is making sure your girl is warm. Okay. And I had to get up. Whatever. All right, guys. So I'm going to be in the closet away from Mariah so she doesn't know, and she can't hear me of what I am doing. This is the first thing I am doing. Apparently, if you rip off your shirt over your head, if you take it off like that, it's supposed to turn your girl on. And this is not a shirt, so I got to change into a shirt right now. And this is what I'm going to be wearing. I try to find, like, a tighter, fitted shirt. So what I'm going to be doing, I'm going to be taking my thumb and my finger, just ripping my shirt off over my head, and that's supposed to turn them on. So let's see if it works. I am excited to find out. Oh. Hi. Okay. How's your day going, you know? I'm great. It's kind of hot in here, isn't it? It's kind of stuffy, right? Yeah. Much better. Okay. That was pretty hot. Pretty good? Pretty good. I saw your physical weight go up. That was hot. No, that was hot as s***. That is pretty sexy when men do that. I do have to rate that. It's not one of the hottest things you've done. But I told you I got an arsenal. So there's more. There's better than that. That's just the starter. What do you rate it? I would say it's 7 out of 10. 7 out of 10? It was sexy. Pretty good for the first one. It wasn't sexy enough. I think you could do more than that. I got you. You got me? I got you. All right, well, I'm waiting for that.  Is that part of the sexy thing? This is all part of the sexy thing.  Let me just tell you. I don't even have to do this video, guys, because I feel like I just turned right no matter what. But this is just to give my boys some tips. You might just want to go back into the closet there. Hey, let me just say I think she loved it on to the next one. All right, guys. So for this next one, as you can see right here, it's a huge trend in apparently girls' love. When you take your sleeve and you roll up a button-up shirt to your elbow, it's supposed to be just like sexy. And that's the whole point of this video. I'm trying to turn Mariah on. I feel like this one at least going to get a 9 out of 10. Like, if it's 9 out of 9 out of 10, I'm going to be mad because it's just going to keep getting better and better. So let's go see how she thinks about this. And I got my best shirt on. Like this shirt is like, come on. It's like silk. So nice. If you're looking at it, it just looks like sexy. You know what I mean? All right, babe. Okay. Why have I never seen this top on you before? You have. I took Instagram pictures in it. When? Hey, you're killing the mood. No, it looks sexy. All right, ready? Okay. Don't mind my pants, but how's it going? It's going good. I need to get out of this air vent. Can you close that air vent? Kind of make my eyes. I need a handyman. Yeah, I need a handyman. I need a little handyman on here. I could be more than just a handyman to you. What? You know what's actually sexy about that? Like your muscles are starting to get bigger. I know. I can barely roll it up. So the fact that it's looking like really skin tight, that makes it look... What do you think? Really already kind of turning me at it. It's only the second thing. You want me to fix your plumbing on your sink? Well, actually, can you go ahead and go up there and close that vent really quick? Okay. Focus on those. I know, but I want to see you reach. I want to see you reach with those muscles. This might win it all. Let's see. Oh. All right, honey. So what do you rate the sleeve roll up out of 10? Was that sexy enough or what? Honestly? I think this shirt makes it. See how all this... And then it comes down to this thing. All right. I got to give this a 10 out of 10. 10 out of 10? Yeah, you looked great. What? You would have been a 10 out of 10, but that shirt just defined your muscles and it looks good. Hey, catch me at the modeling agency later, guys, because we're not taking L's in this video. This shirt changes the game. It really does. I'll be back. Bye. Okay, guys, the next one. It worked. I did not think I was going to get a 10 out of 10. I told you this shirt in person. It just looks 10 times better. I'm not even going to take it off for this next one. As you can see, stretching while standing is apparently a huge thing that women just like to gaze at their significant other. I'm just going to keep the sleeves rolled up. I'm going to be stretching, flexing, having the muscles pop and see what she says. I'm hoping to get another 10 out of 10. That is my goal for this next one. Cross my fingers. All right, Naughty. All right, I'm ready. Ready for this? More than ready. Okay, so same shirt? Same shirt. All right. Trying to get my approval odds up here. I don't know what you're doing. You know what I'm saying? But yeah, so how's your day going? Going good. Going good? Damn. What? I'm just chilling here. You know? Guys, we got to cover up the camera. We got to cover up the camera. What? You're so funny.  Dang babe. So I thought we could get some dinner. I'm not even dramatic. This shirt pops your muscles like guys. What? What? What? I'm just... What do you rate my... Okay, it was good when you stretched and stuff, but you sitting like this is not that cute. Well, it's supposed to be standing anyway. Dude. A little bounce or vibe? Can I check the watch? Can I rate it like over a 10? Over a 10? Like that like broke the scale. No way!  I'm dead serious. Like that was really hot. A 10 out of 10. Two times in a row guys. Over a 10. That was a 10 out of 10. Like that was hot. I might have to keep this thing on a whole video. This is not even the craziest part babe. What?  What's the meter at? Like out of 10. You had a five already? Oh, we got to get her to a 10. We might have to end this video early guys. All right guys, so moving on to the next one. Mariah's already had a five out of 10 and that's insane. Like if this next one can get her to a seven out of 10, I'm going to be his static. We're looking good by the end of this video to reach my goal. But as you can see, I took off the white shirt. I didn't want it like seem like I was getting a 10 out of 10 every single time just because of this shirt. Like I want it to be generally me trying to make Mariah make my girlfriend really just feel attracted. You know just by like what I'm doing. So for this next one, as you can see right here, this is a no brainer. Like I feel like all guys know if you do this and I'm not saying because I don't want her to hear me. If you do this, women find men like so attracted. So I'm just going to be, you know, sitting down, doing my thing and just trying to get her to a seven out of 10. Wish me luck. Okay. I haven't seen you wear that actually in a long time. Really? I like that one. Do you like it? Yeah, I do like it. That's awesome. You look really pretty. Thanks.  Not really. I kind of went to do last night.  Like pretty good. Yeah. Is this like trying to feel me out or something? No, I'm just, I'm just, I'm here to listen. Like what do you want to talk about?  Are you like happy, you know? Yeah. Anything I need to improve on in this relationship, you know what I mean, like? Are you getting to the point of what you're doing right now because you're not really making any sense? I totally understand. Like that's, that's awesome. Yeah. What? I'm just here to talk with you. Like should I, is there anything that you would like me to do more in our relationship? Like I'm totally just hearing you out right now. Ew. Whatever you're doing right now is just not passing the vibe at all.  Okay, but why are you making it all awkward? Like because I'm listening to you. I'm understanding. I'm engaging into the conversation. Okay, I listen to that and I love that and everybody in our relationship should have that but the way that you were just performing that is that I would get, I don't even know if I could get that right on a rating right there. No! Wait, is this a zero? I would say a three out of ten. So did that, was that like a turn off? No, this is the thing. When men act like they care and they ask you about your life and they make sure that you're okay, that's very attractive. It's just the way that you were doing it. Like you were like, okay, babe, so how are you feeling today? Like you weren't like, it was just- I'm just engaging in the conversation. I'm trying to hear you out. But it was just not, it was like an awkward type of like interaction. Like it wasn't like- So that was a turn off?  Alright, what are you out of out of a ten? Three. Hey, you're done with three? I said three. No, for your like turning on. Like you're not turned on yet. Like a ten's turned on. What do you have now? No, about like a four. Because you- No! That hoodie, I thought you were going to use me with that because that looks so good on you. And I love that. Mama Squad, I will not fail you. Mariah, I will not fail you. I got some saxing that's coming up. It's about to smack you in the face, okay? So just get ready and stay tuned. Guys, I'm freaking out right now. She's down to a four. That just backfired in my face. Terrible. I need to kick it up ten notches. I need to get her up to almost a ten out of ten or a ten out of ten. I need to turn her on. I need to find something to do. And I think I have the perfect way to do it. All right, so she already loves this sweater.  So what I'm going to be doing is I'm going to be doing this to her. So this is, like, already a turn on. I feel like this, with me wearing something really nice, I feel like it's just going to, like, boost her back up. There's no way I could screw this up. So I'm just going to go for it, see what will happen. Trying to get my points back up, guys. I might add a little more spice because I did F up that round. So I've got to make up for it now. Okay, you're just, okay. Hi honey. Hi. How are you? Come here, come here. Okay. I love you so much. I love you. You're so cute. Huh? You like it? Yeah. Huh? I feel safe. You feel safe?  You feel good, babe? You know what I'm doing? Yeah, you're going to try to seduce me. No, I'm hugging you. I'm hugging you from behind. I really like it. You do? I feel actually really... I feel really warm and like... I know. Fall, yeah. I don't feel like that. I don't want you to go, yeah? You don't want me to go? No. I would give this a 10 out of 10. 10 out of 10? I don't like that. Yeah! I don't like that. What are you? Okay, what's the scale? What's the scale up to? My turn, you want it? No, what's the scale? Oh, she said 10. What are you at? No, for real. Like a 7. A 7? Maybe I should do this more often, guys. This is the first time I've ever done this really in bed. Oh, in bed? Yeah, I never just came up and hugged you, but... I know, you never do. You never appreciate me. I'll be back. All right. Yes, I do. I know you do. You're getting lipstick on me. Oh my God. Guys, look how cute my nails are. They're super cute. They remind me of like chocolate, but it's like for fall. But look how cute they are. Shout out to my nail girl. She always kills it when it comes to my nails. Like these are just freaking adorable, but... All right, guys. So I don't have a particular picture with the website that I was finding all of these on. I kind of just like thought of this one myself, but I know it's out there. I feel like girls really like like a... Just like a gym, like tough guy look.  See what she says. I feel like this might do it. I honestly should have worn this when I was hugging around her because like I feel like the muscles and everything like we'll just add to the whole like situation. But let's see how she reacts to this. Let's see if this makes the whole video. Wish me luck. What's going on? Just got done hitting the weights, you know. Did some buys and tries today. Yeah. Just got out of the gym. Long workout. Pretty good. 225 bench. I could bench you like 30 times. Do it. Do it. Right now. Come on.  I'm dead serious. Bunch me. All right. If I bench you, is this like a turn on? Yeah. All right. Put your legs together. I'm going to have to break my... No, come back. Rip my pants. All right. Come back. I need to get a ton out of the ton, babe. So what do you rate this out? I feel like you like this. You already got my hair messed up and I'm not even... Everything? Tell the camera. Tell me in the camera. Do you have anything else? Do you want to end it there? What do you got there? Oh, I got some stuff, but like... Okay. I think I'm going to not give it a 10 out of 10 yet. Why? Like out of scale, like in my turn on, I would give it like a 10 out of 10. So you got a little bit more... So I just need one more good thing. And you better have one more good thing. No, I got this. I got this. I'll be back. I got this. I know you would have done that. You just want to see one more. I do want to see one more. Come on. What girl wouldn't want to see their sexy man do one more thing to turn him on? What? What? I'll be talking S out there. I know this was a 10 out of 10. I know your turn on. Like you were like throwing me like... I wasn't talking S. Alright. Guys, I literally came up with this one myself on the spot and I just knew that it would work. Like I knew like the whole figure and the fact that I literally benched Mariah after some minor, minor delay. Alright guys, so this is going to be the finale. This is going to be the one that makes or breaks this video. If I can seal the deal right now, she's going to be a 10 out of 10 and I have achieved my goal. So what I'm going to be doing... I don't have a picture for you guys because I saw this one earlier and I could not find it again.  And apparently that's supposed to be like a huge turn on for women. Let's try to do this. Hopefully she doesn't get turned off, but there's no freaking way. I'm also going to keep this on because like this did it for the last one. Now I just got to, you know, kind of do my thing. So let's go. You're looking mighty fine. Can you come here really quick? I just needed to show you something. Yeah. Alright, ready? Hey Ben. Hi. How are you? Good. You feeling good? Feeling good about yourself? Huh? Like that chain in your face? Babe? Okay, babe, I'm sorry, this is 0 out of 10 and you told me to turn me off. Babe, no, you're lying.  You're lying. What? Stop, how are you doing that? You don't like the chain in your face? No, it's not sexy. Babe, the chain in your face. I am so unturned off right now. The chain. Moving in your face, sliding you in the face. I'm unturned off.  Yeah. Come on. I did it. You, babe. You should have done something more sexy than that. I think that was good at all. It's supposed to be hot, like changing your face. I'm joking. Say like off camera. No, I don't want your necklace in mine. The whole point for me to put my necklace in yours. I knew there was no way that this girl could have been turned off by the necklace in your face. Guys, okay. Chill. Babe, okay. Video right here. Thank you so much for watching this. I did not think it was going to take this quick to get her turned on. Apparently it works, guys. Make sure to like this video for me and for my sake. Because after this video, I don't know what's going to go on. Chill. Can you just be serious for one second, babe? No, I will say you definitely did turn me on. You did accomplish your goal. Yes, I knew it would work. I knew there was no way. I was so surprised, like off camera. I thought I was going to have to think of another thing to do. No. To turn you on.  I was trying to get you to realize it's the chain in your face. Not me throwing you on the bed, even though that is sexy. That just added to it, right? That did it. I told you, I was going to add a little spice in these. Everyone, I hope you enjoyed this video. Thank you so much for watching. I really put in my 100% max effort to try to make the best reaction I could. And you obviously did really good. But we do have to give our end of video post notification shout out. So this post notification shout out goes to Thessa Louise Jane Rupp. Thessa Louise Jane Rupp. If we said it wrong, I am sorry that we tried to pronounce it as best as we can, but thank you so much for commenting and having your post notifications on and being subscribed to our channel, guys. That's all you have to do to get a notification shout out. Just be showing love all around. And we will pick one of you guys every single video to do it. Mariah is literally like rubbing up her hand all on me. Once again, thank you guys so much for watching and we will see you in the next video. But until then, peace. Love you guys.


Hi. Welcome everyone. My name is Sergei Shishkin. I work for Toralytics, which is a data science company in Singapore and Zurich. And we started using Docker quite a while, but for small things, and recently I started using it more for deployment. Previously we did a lot of things with Ansible. We're still using Ansible extensively, but more and more I find ways where I, as a developer, as an engineer, not as an operation person, can build something which is easy to deploy and also complex in a way that it can be deployed in a cluster environment, not just a small single application. And I discovered for myself a tool outside of just the single Docker executable, which is Docker Machine. I'm not sure if anybody of you are familiar with it. Did anyone try to run Docker on Windows or Mac before Docker for Mac came out? Yeah, so you probably used the Docker Machine. So back in the time, and there is still no kind of native support outside of Linux world for Docker. So everything outside of Linux has to be somehow virtualized, and previously it was a virtual box on either Windows or Mac, where you would have something that manages a virtual box.  Then Docker for Mac and Docker for Windows came out and I thought, oh, now I don't need Docker Machine anymore. I can just use Docker executable and I'm fine. And it was, of course, as promised, a very nice product. But then I figured out that, well, if I want to run my application locally on my Mac, for example, test it in a Docker environment and I want to deploy it somewhere, how do I do it? And the most straightforward way for us, at least with Ansible deployments, was to, okay, so we provision our servers with Ansible, and Ansible would be responsible for running a Docker daemon for pulling proper images, starting Docker applications in a daemon, or we would use, we actually don't use worm yet, or any type of Docker cluster management, unfortunately, but I look forward to hear about that and use it as well. And Docker Machine seemed to be quite interesting. So I'll demonstrate how you can use Docker Machine in your workflows and Docker Compose as well a bit. Who is familiar with Docker Compose? Who is not familiar with Docker Compose? Okay, I see. That's the trick. So Docker Compose is an additional tool in the Docker toolbox, which is a separate tool written in Python and automates things around Docker. And what it does, it helps you build applications out of multiple services that compose together. That's why it's called Compose. And it solves linking of containers in this virtual Docker network. It creates a network. It also creates volumes for your containers under the hood. So even if you don't need multiple containers, even if you just have one container which you want to run locally or remote, it's still a great way to get rid of this huge Docker executable command lines where you specify all the flags by basically including them in a Docker Compose file. So a basic Docker Compose file looks like this. You specify your services. In this case, there are two, VAP and Redis. VAP is built out of a Docker file which is in the local directory. That's what the dot for build specifies. It exposes a port 5000 on a port 5000 on a host machine. It exposes a volume or maps a volume. Actually, two of them. It links to Redis container. There is a Redis service as well built out of a public Redis image, the latest version. And so that's all you need to have this application, VAP application using Redis. So you start with Docker Compose and you have Redis and you have VAP application. They can talk to each other. Redis is not exposed outside of your specific Docker Compose network. Because for each application, Docker Compose will create a separate network and unless you expose any ports, they will not be exposed outside. But every container in the composition can still talk to every other container, which is very nice. So what we'll take is we'll take the Docker Compose example, which is a bit of an involved example. It's a voting app where you can vote for dogs or cats. So it has a voting app. It's a Python VAP application which accepts votes, publishes them to Redis. Then there is a Redis as a standard Redis container. Then there is a worker service, which is written in .NET, which listens on Redis updates and updates the results in Postgres. And then there is a Node.js application, which pulls Postgres database and displays the results. And it's a bit reactive, so it actually works in almost real time. But I didn't look into the source code much. That's what Docker is for. So this is how the Docker Compose for this particular application looks like. So there is a vote application, again, Python built from source, has volume, has ports. There is Redis, exposes a port. Although it's not strictly necessary if you would omit this line, everything would work just fine. There is worker, there is DB, and the result application is Node.js. So I've cloned the application here, and the normal way you would use Docker Compose is by just saying Docker Compose up, and it will figure out everything it needs, pull the necessary images, build the necessary images, update any applications, run them, and you see this. So if you run it with an interactive terminal, so without the dash D flag, without the detached mode, it will attach to the logs, and you see on the left it denotes which log line comes from which service. Sometimes they can be messed up, but unless you have ASCII art like Redis, it doesn't really make any difference. So here is the application running. Let's actually go and check how it looks like. Yes, it was port 5000. Yes, so we have this application. We can vote for cats and dogs, and on the port 5001 is the result. So you actually see if I change my mind, it updates automatically. So very simple stuff. Now I'm an enterprise developer and I want it to be deployed in the cloud. How do I do that? Here's one way. Because Docker has this detached architecture that Docker demon exposes a REST API, which Docker command line is actually talking to. So the Docker executable that you're running on your command line is actually a REST client which sends commands to a specific server. And then the server executes the commands and sends the results back. And this architecture allows for very easy remote Docker management, and that's exactly what Docker machine does. So now I have an EC2 instance running on Amazon cloud. So there is nothing specific to AWS. So Vincent will talk about how AWS specific integration is done. For these purposes what I need is I just need some remote server with SSH connection. So what I do, yeah, so this is the SSH connection here. What I do is let me stop this instance here and show you what I have in Docker info. So if you look carefully, you see that in this particular Docker instance, my operating system is Alpine Linux, which is the host operating system that the small hypervisor on Docker for Mac is running. So this is what happens when I run it locally. Now this is a totally different case because previously I've created a Docker machine here. So I'll show you what I have here. So I have a test Docker host which is running and I've created it the following way. So Docker machine supports provisioning or provides provisioning of Docker hosts on remote machines. And it has several providers. So one of them is generic. You see driver generic here. For that provider, all is necessary is to specify the IP address. In this case it's DNS identity. Provide SSH user, provide SSH key and name the machine. And it will go and create it. I'll spare time of not showing how it does it. It does it. I just did it five minutes ago. So now let me show it this way. So now I can have an environment that is needed for me to use this Docker instance. So if you run Docker machine and then the name of the machine it will write all the experts which are needed. And then if I evaluate them then my environment, my command line now is able to talk to the remote Docker demon. So I do that. And I guess it's still running. Sometimes it might be a bit flaky. But if I run Docker info you see that operating system there is Ubuntu which is the AWS instance I've created. So now I can run just normal Docker stuff here. See which images I have there. And it's really the same Docker experience you have locally with the remote machine. But we're interested in Docker compose. So the same way I can Docker compose up this application in the cloud or on the remote machine. So actually I hope it does work. Yeah, I think they should be open. Yeah. Oh, sorry. Yeah, exactly. I tested it at home and for security reasons. Oh yeah, now it works. No, no, it's just firewall on AWS. Yeah, but it was done by you. You can only do it via AWS or you can do it all the AWS command line. Yeah, sure. I mean, it's not done by a Docker machine. No, no, no, no. It's nothing Docker specific or Docker related. Yeah. So the same stuff here. Go to 5001. Yep. So beyond that, let me stop this. Docker machine supports regenerating certificates. So what it actually does when you specify certificate, the private key the first time you connect to it, it will create a certificate you need to open the port that the Docker demon is listening on. Actually, which the rest API will work through. It's secured where the certificate client is authenticated by certificate as well, which is why the regeneration is needed. So it's not anyone who knows the address of your machine is able to talk to your Docker host on that machine. Of course. Not anymore. Yes. Okay. Yeah. So you have one active Docker machine per your terminal session, which is, which is obvious.  So you see a lot of options around swarm as well. So I didn't test it. I hope it works. It will be really interesting. But so now how I see our deployment strategy evolving is that we will still use something like Ansible to provide like the foundation of infrastructure to well install patch level of operating system and everything like that. And then when a new machine comes into fleet, it will be provisioned by something like Docker machine can come into swarm. And then from there on we can have automation on continuous integration or continuous deployment where Docker itself is used to publish applications and upload applications. So if you're interested in Docker compose, it's also very powerful tool. It's basically almost the same command set as you have for normal Docker, but no low level stuff because you're not talking about things like volumes and networks anymore. You specified them in your composition file. You are talking about services and applications. And then you manage them with this command set. All right. Do you have any questions? That's all I have. Oh yeah, before we go there. We are doing some interesting human behavior analytics and we are hiring. So if what I've just explained to you is nothing new to you and you know more than you definitely should talk to me. Yeah, questions. Different containers. How do you aggregate logs from different containers? How do you have aggregation from different containers? So you have the standard Docker log collection from standard out. Okay. That is Docker containers logs, but how about the application logs? Of course, each one will have a different scale things up. Yeah, so. So in that case, I need to have centralized repository where I can collect application logs. It's not containers logs, application logs. Well, if your application is logged on standard out, then your application logs become just container logs. And usually in a container shouldn't have more than one process anyway, so more than one application. So there shouldn't be anything beyond your application running in that particular container anyway. That's one way. If you are fancy, you might look into something like gray log or elk where you can even deliver logs by UDP or TCP that will work the same. And probably the least preferable option I would say is just mount a volume and log there. But then you have to manage all those volumes and log files. Maybe I can add something. So in Docker, there is the concept of log plugins like log providers. So what you mentioned about gray log, there is a plugin. So basically you just need to run a gray log server or plugin daemon. And then the Docker engine will then, if you tell your container needs to use that plugin, then the engine will integrate your container with that plugin. So it will automatically get sent there. So your logs are then going through a log forwarder and then centralized tagged however you want. One of the trade-offs I see is that if you log to standard out, then all your logs become text. So you basically have just lines. And then Docker will take those lines and log them. And then on gray log, you will have to somehow parse them back. However, if you have specific libraries for gray log data log format, then you can log structured, log events from your application. And then I would go with the networking option where you just directly send them to the collector from within the container. Any other questions about Docker machine, Docker compose, anything you want to see? So before Docker for Mac came out, Docker machine was a way to use Docker on non-Linux environments. So where you would use, so Docker machine has different providers, machine driver. So these are all the drivers that it supports and one of them is virtual box. So you would just Docker machine create driver virtual box something and it still works. After that, you have a greater level of control than if you are using Docker command line? No. After that, your Docker command line is pointing to the REST API which is hosted in a virtual box that Docker machine provisioned. But then you run and it works. It's actually very, very nice solution. But you run into issues where you, for example, you read some guide on how to use Docker. It says Docker compose up, you run it and says go to local host port 5000. And it's not on local host because it's on the IP address of your virtual machine. So you need to be careful with that and networking is a bit more complicated in this scenario. What else you have to do? So we saw that you need to adjust the ports so that it's open, what else do you need to do? Or what, maybe add civil is have to do to have a working setup? On the port side, so 2376 is what Docker is listening on. So you need to open that when you provision with Docker machine. Everything else is Docker machine taking care of. You can read the generic driver documentation to see which operating systems are supported. Not all of them are supported, but most of them are supported. But Docker machine will even install Docker on your host. So really I just created bare bones Ubuntu instance and that's it. Nothing more. So normally you put one application per instance. So in this case you put three applications on one instance. I wouldn't say you necessarily put one application per instance. And again, things like swarm and Kubernetes and all those clustering solutions are about making containers portable. So it doesn't really matter on which instance they run. So if instance has enough memory, why not put more containers or less containers? It's one service per container, but you can put as many containers as you can on one instance. Toro Compose has a scale. It can be a bit less. It can scale more than one instance per service. How does it work with Fab? Does it do with load balancing? How does it know which one to forward the request to? Or do you have to do that manually? Yeah, that's a great question. So you have to do it manually in the sense that Docker doesn't, as far as my understanding goes, doesn't provide you anything around that. What Docker Compose will do, it will just create more container instances. They will have their own host names. They will expose their own ports. So that's why you have to be careful how you map the ports on the host, whether you map them at all. And you can use solutions like HA proxy. And the one is even... I saw one which supports when it runs in Docker and you say to it or you need to monitor these containers, it will be able to resolve them. So in the legacy mode of Docker Compose, in the legacy Docker networking, there is no service discovery or anything like that. But in the newer version of Docker Compose, version two, when you create networks, the Docker engine actually exposes a DNS resolver inside the container on port 111, or some port that I don't remember exact port. But it means that if you connect a container to a network and you scale it out, all of those containers can be found via DNS round robin. So you can actually, with Docker Compose stack locally, create a full load balancing solution with DNS round robin on Docker networks. But you need to specify the Docker Compose version two and you need to specify special networks. And your container should not connect to the default Docker bridge, but they should connect to the networks. And then you use networks to isolate the layers. But you have DNS round robin there. So like sometimes I want to recreate a complex situation on Amazon where I have an ELB that does TLS termination. Then I have my Node.js server and I have like an engine X load balancer in front of it or something like that, or reverse proxy engine X where I have virtual hosts. So I can simulate the whole environment using Docker Compose locally with TLS termination and upstream DNS round robin across hosts. So I'm able to test and change my engine X configuration and see if it's going to work or not, like how are the proxy forwarding headers. So far I've been able to reproduce very complicated setups just locally on my laptop. Does this use a swarm or something or is it different? Because swarm, based on my understanding, swarm is actually for clustering which is making it more elastic. So does it use a swarm? Well, I showed didn't use swarm, but swarm is supported. It's coming in. Yeah. But again, so what you get with Docker machine is provisioning of Docker host on a remote machine and then redirecting your local environment so that your Docker command line tools now can talk to that remote Docker demon. And then everything, all other tools that built on top of Docker will work just seamlessly. Well, unless they make any assumptions on IP addresses or local volumes or things like that. Guess we should go to the next. I guess there's more questions. The questions are important. Maybe we can see the questions after this one. Yeah. Okay. Thanks. Thank you.