We're going to start with a meter stick that's a rather roughly calibrated meter stick. There's only one scale division at the beginning and one scale division at the end. What we assume is that if we have a device, we can divide visually the smallest scale division into ten equal parts so that we can visually divide this into a tenth of a meter and estimate the nearest one of those. We're going to measure the distance between two lines with this meter stick. We'll estimate this distance to be about .3 meters. That is one significant figure and it's an estimated figure. The actual length might be .2 meters or it might be .4 meters, but our best estimate is to be .3 meters. We have one significant figure. If we report that piece of information as .30 meters, what we're telling someone is that we could actually visually divide this scale into a hundred equal parts and estimate that the nearest one of those. So basically say that it is the thirtieth one of those. That's really not practical given the calibrations on this meter stick. If we go to a second meter stick, this meter stick is calibrated to the nearest tenth of a meter. What that means is that we can measure with certainty the nearest tenth of a meter and then estimate between the smallest scale divisions and estimate to the nearest hundredth of a meter. If we measure our same distance, we find that we know with certainty that we are at least .2 meters and not up to .3 meters. So we're somewhere between .2 and .3 meters. We can estimate the second digit and say that we have .28 meters. The .2 we know with certainty. The .08 is estimated. We have a total of two significant figures, one certain and one estimated. Every time we increase the number of scale divisions on our device, we add another certain figure. We will always have one estimated figure as we estimate between the smallest scale divisions. If we take a meter stick with a hundred graduations on it, we're going to be able to know with certainty the nearest hundredth of a meter and then estimate to the nearest thousandth of a meter. We will have two certain figures and one estimated figure. So if we read our length now, we would know that we're between .28 meters and .29 meters. So we have two certain figures, .28 and one estimated figure, which I'll say is .8. So our distance is .288 meters. We have three significant figures, two certain, the .28 and one estimated, the .008. The number of significant figures you have is really determined by the calibrations on your instrument. Now I have another meter stick that I want to take that same distance with.  Well this is a little bit of a problem because my other meter sticks were telling me that was about .28 meters. Well if I look at my meter stick and I compare this meter stick with my previous meter stick, you can see where the problem is that one of my meter sticks is short and it's going to give me an error in my reading. One of the assumptions we make about instruments is that they're accurately calibrated. What we have is an inaccurately calibrated meter stick. Now this meter stick is not a terrible situation in the sense that if we find out that it's not accurately calibrated it introduces a constant error because it's always off by the same distance. So if we know that it's an error we might be able to correct our data later. A worst case scenario is a meter stick that looks like this and that it is warped in several different places. This will give us really inaccurate data and data that would be very hard to correct because the error in the calibration changes depending upon what part of the meter stick that you use. When you take measurements you want to make sure that you have an accurately calibrated instrument and that you notice the scale divisions and take the correct number of significant figures.


So I've been making a bunch of videos as you might know videos about business and marketing and productivity and and healthy money and This is just a really short quick one to let you know that this is my birthday week Coming up, and I just have one small request if you have been watching any of my videos Would you take a moment to comment below and let me know which idea? idea Comes to mind for you that really made a difference for you Or maybe you just been reading my blog posts or reading my social media postings or reading my email newsletter What idea comes to mind in heart that really made made a difference for you? Maybe it's about marketing. Maybe it's about time management. Maybe it's about money Anything that success authentic success Comment below and let me know whatever comes to mind and heart, you know anything you can remember about it Even just a few words or phrases that be helpful for me because I'd love to compile a sort of best of My content based on what you all think so Thank you so much for helping me celebrate my birthday in this way and until the next video. I wish you well


Brothers and sisters, our hearts have been blessed and renewed by the Spirit we have felt at this general conference. Two hundred years ago, a pillar of light rested on a young man in a grove of trees. In that light, Joseph Smith saw God the Father and his Son, Jesus Christ. Their light drove back the spiritual darkness that covered the earth and pointed the way forward for Joseph Smith and for all of us. Because of the light revealed that day, we can receive the fullness of blessings available through the Atonement of our Savior, Jesus Christ. By virtue of the restoration of His gospel, we can be filled with the light of the Savior. However, that light is not meant for you and me alone. Jesus Christ has called upon us to let your light so shine before this people that they may see your good works and glorify your Father who is in heaven. I have come to love the phrase that they may see. It is an earnest invitation from the Lord to be more intentional about helping others see the path and thereby come unto Christ. When I was 10 years old, our family had the honor of hosting Elder L. Tom Perry of the Quorum of the 12 Apostles while he was on assignment in my hometown.  While Elder Perry recounted stories about the saints around the world, I was enthralled. It was getting late when my mother called me into the kitchen and asked a simple question. Bonnie, did you feed the chickens? My heart fell. I had not. Not wanting to leave the presence of an apostle of the Lord, I suggested that the chickens could fast until morning. My mother replied with a definitive no. Just then Elder Perry entered the kitchen and with his booming enthusiastic voice asked, did I hear someone needs to feed the chickens? Can my son and I join you? Oh, what an absolute joy it now became to feed the chickens. I ran to get the large yellow flashlight. Excited, I let out, skipping over the well-worn path to the chicken coop. With the flashlight swinging from my hand, we crossed the corn patch and passed through the wheat field. Reaching the small irrigation ditch that crossed the path, I instinctively jumped over it as I had done many nights before. I was oblivious to Elder Perry's efforts to keep up on a dark unknown path. My dancing light did not help him see the ditch. Without the steady light to see, he stepped directly into the water and let out a loud groan. Panicked, I turned to see my new friend, remove his soaking wet foot from the ditch and shaking the water from his heavy leather shoe. With the soaked and sloshing shoe, Elder Perry helped me feed the chickens. When we were through, he lovingly instructed, Bonnie, I need to see the path. I need the light to shine where I am walking. I was shining my light, but not in a way that would help Elder Perry. Now, knowing that he needed my light to safely navigate the path, I focused the flashlight just ahead of his steps and we were able to return home with confidence. My dear brothers and sisters, for years I have pondered the principle I had learned from Elder Perry. The Lord's invitation to let our light so shine is not just about randomly waving a beam of light and making the world generally brighter. It is about focusing our light so others may see the way to Christ. It is gathering Israel on this side of the veil, helping others see the next step forward in making and keeping sacred covenants with God. The Savior testified, behold, I am the light. I have set an example for you. Let's look at one of his examples. The woman at the well was a Samaritan who did not know Jesus Christ and was viewed by many as an outcast in her own society. Jesus met her and initiated a conversation. He spoke to her of water and then led her to increase light as he declared himself to be the living water. Jesus was compassionately aware of her and her needs. He met the woman where she was and started by talking about something familiar and common. If he had stopped there, it would have been a positive encounter, but it would not have resulted in her going to the city to proclaim, come, see, is not this the Christ? Gradually, through the conversation, she discovered Jesus Christ and despite her past, she became an instrument of light, shining the way for others to see. Now let's look at two people who followed the Savior's example of shining light. Recently, my friend Kevin was seated next to a business executive at dinner. He worried what to talk about for two hours. Following a prompting, Kevin asked, tell me about your family. Where do they come from? The gentleman knew little about his heritage. So Kevin pulled out his phone saying, I have an app that connects people to their families. Let's see what we can find. After a lengthy discussion, Kevin's new friend asked, why is family so important to your church? Kevin answered simply, we believe that we continue to live after we die. If we identify our ancestors and take their names to a sacred place called a temple, we can perform marriage ordinances that will keep our families together even after death. Kevin started with something he and his new friend had in common. He then found a way to witness of the Savior's light and love. The second story is about Ella, a collegiate basketball player. Her example began when she received her mission call away while she was away at school. She chose to open her call in front of her team. They knew almost nothing about the Church of Jesus Christ and didn't understand Ella's desire to serve. She prayed repeatedly how to explain her mission call in a way that the teammates may fill the spirit. Her answer, I made a PowerPoint, Ella said, because I'm just that cool. She told them about the potential of serving in one of 400 plus missions and possibly learning the language. She highlighted the thousands of missionaries already serving. Ella ended with a picture of the Savior and this brief testimony. Basketball is one of the most important things in my life. I moved across the country and I left my family to play for this coach and with this team. The only two things that are more important to me than basketball are my faith and my family. Now, in case you are thinking these are great thousand watt examples, but I'm a 20 watt bulb. Remember that the Savior testified. I am the light which He shall hold up. He reminds us that He will bring the light if we will just point others to Him. You and I have enough light to share right now. We can light the next step to help someone draw near to Jesus Christ and then the next step and the next. Ask yourself, who needs the light you have to find the path they need but cannot see? My dear friends, why is shining our light so important? The Lord has told us that there are many yet on the earth who are only kept from the truth because they know not where to find it. We can help, we can intentionally shine our light so others may see. We can extend an invitation. We can walk the journey with those who are taking a step toward the Savior, no matter how halting. We can gather Israel. I testify the Lord will magnify every small effort. The Holy Ghost will prompt us to know what to say and do. Such attempts may require us to step out of our comfort zone but we can be assured that the Lord will help our light shine. How grateful I am for the Savior's light which continues to lead this church through revelation. I invite all of us to follow the example of Jesus Christ and be compassionately aware of those around us. Look and pray for opportunities to let your light shine that others may see the way to Jesus Christ. His promise is great. He that followeth me shall not walk in darkness but shall have light of life. I testify that our Savior Jesus Christ is the way, the truth, the life, light and love of the world in the name of Jesus Christ, amen.


The full details for the Nintendo Switch online expansion pass have been announced, and the price point is somewhat higher than many potential subscribers had been expecting. Access to Nintendo 64 and Sega Mega Drive games, along with Animal Crossing New Horizons DLC Happy Home Paradise, will cost $50 a year in the US, or £35 in the UK. Many fans are less than impressed by this cost, so why has Nintendo set the expansion pass price so high? As we noted in our video on Super Mario 3D All-Stars last year, Nintendo has always planned to build up their online subscription service, and that plan has always involved offering N64 games. Said Nintendo President Shontaro Furukawa, subscription-based services are becoming common in all sorts of industries, not just the games industry. We believe that we need to further enrich these sorts of services in the future. When asked in an investor meeting about bringing N64 games to Nintendo Switch online, he said, We are currently offering Nintendo Entertainment System titles as part of the Nintendo Switch online service. This is just one of a variety of forms in which consumers could play past titles, and we'd like to deliver them in some form. We are very aware that many of our consumers have been asking for a way to play older titles like this. The challenge that Nintendo Switch Online has faced is this variety of forms that offer competing ways to play iconic Nintendo games. The hugely successful Super Mario 3D All-Stars highlights how Nintendo has struggled to commit wholeheartedly to a subscription service. However, over the past couple of years, something big has shifted. In the first year that Nintendo Switch Online was available, it gained approximately, the official numbers aren't clear, 10 million subscribers. By the end of its second year, the service had reached 26 million subscribers. The cause for such a large increase in subscribers? Animal Crossing New Horizons. The game convinced tens of millions of players to embrace the online subscription service, with the result that the subscriber base is now far more lucrative for Nintendo. The next step, according to Furukawa, is to add greater value to the service, and see how many of these subscribers can be convinced to pay even more money. For Nintendo Switch Online, it's important not only to increase the number of new members, but also to encourage existing members to continue using the service. So we are working on increasing the appeal of the service to make it even more fun and convenient to play with Nintendo Switch. While the most dedicated of Nintendo fans have been asking for N64 and GameCube games for years, the biggest proportion of subscribers are more interested in Animal Crossing. Happy Home Paradise is the main seller for the expansion pass at present, and Nintendo has priced the service to reflect the money they would otherwise have made selling the DLC to consumers. Nintendo, after all, has a history of refusing to reduce the price of their products, even if it loses them sales in the long term. It's also worth mentioning issues surrounding licensing. According to industry insider Emily Rogers, licensing costs are likely the main culprit behind NSO expansion's bold price. I heard Sega were paid very, very well. Third-party titles, Konami, Capcom, are also being licensed for Genesis NSO, so the licensing costs begin to add up after a while. And who knows what licensing agreement Arrangement Nintendo had with Rare Microsoft. It is likely true that licensing costs are only set to increase over time for subscription service offerings. With Microsoft throwing billions of dollars into building up Xbox Game Pass, it's going to be increasingly difficult for other gaming subscription services to keep up financially. At the same time, Nintendo being Nintendo, it's unlikely that the company would have agreed to any deal with Sega unless they were absolutely happy with it. Licensing may be a factor, but Nintendo likely wouldn't want to give too much money for Mega Drive games that can already be purchased for cheap on the Switch. It's also worth noting that the goal here is not just to make subscription money. Nintendo is hoping to use these classic games to lure in nostalgic parents who will then introduce iconic Nintendo brands to their children. Said Furukawa, We always hope that our products are enjoyed by a broad audience of many generations, from children to adults. In the many years we have been in the video game business, we imagine people from a very broad range of generations have been playing Nintendo platforms. We'd like to continue to consider methods for communicating the appeal of Nintendo products to the parent generation, including series such as the NES and SNES versions of Nintendo Classic Mini as well as classic content in our online services. So the moral of the story? The family that plays together pays together. Considering our daughter's continuing Zelda obsession, we can't fault their logic.


With these target events, it's not just about the competition cars. Obviously we have the target tour as well, which is not competitive, but around the event we have a lot of different people helping, without their help, we just wouldn't be able to do this.  What is the role of the double zero and the zero car on these type of events? Okay, basically on first on the road I go about five minutes before the first competitor. My role is to essentially warn people that competitor cars are coming, but we also have a role of looking for any issues like tapes that may have blown down. We've struck houses on the road, we've struck cattle, we've had buses coming the other way. You've struck, not literally struck houses on the road. In Taranaki we had a guy that was a bit upset about the whole thing, and he was moving his house and he decided to move it onto the road in place because he didn't want it to go. Even I haven't heard that story. School buses coming the other way, we also do a bit of escorting of school buses if people need to, so we're kind of, we're the first competitive car on the road, but we are looking for anything, any issues.  We call that back and try and warn the competitors so that they can be aware of that 23k business. And then Dennis is behind me, he's doing the same thing, but he just basically confirms or denies what I'm saying. So both cars aren't standard road cars, they're actually, they're effectively both race cars, your rally car had the Evo would be competitive in this field. Yeah absolutely, mine's, this is a rally art built car, so essentially closest thing you can get to a factory built car, yeah it was a competitive car in its day in rally New Zealand. So yeah it's been around a long time and it's only ever been a rally car, never been a road car. And from a VTNZ point of view, I mean these cars now have become some of the most familiar cars in New Zealand motorsport from a target point of view because of the colours and the involvement with VTNZ. Yeah that's right and you know the colours look fantastic, they've done a really really good job and yeah it's, we just become part of the part of the whole thing and people expect to see us. So it's great. Well that's one of the things that I mean I've got to know you obviously through these events and you guys have a lot of fun, when we first started it was about how many bird strikes and have you struck any birds this weekend so far? No but we're trying, we're still trying yeah. And you've sacked the young fella? No, Brad went overseas so he's crewing for us at the moment so that's good. But yeah, I think it's one of the best jobs you could do in target. You know it's pretty relaxed but we've got to be serious on the road but it's an awful lot of fun. So it's not just about being in the competitor lineup or the target tour, you can have a lot of fun, probably not a motorsport volunteer Graham, but there are a lot of spots around these type of events with rally New Zealand, with the rally championships in target New Zealand, from a volunteer point of view, from timing, from going out there and helping out with the security and the park firm, so if you want to get involved just look up www.targar.co.nz, talk to the team and see how you can get involved.


Should we commence? Good afternoon everyone and Welcome to my talk. Just let me know if I'm too loud. I'm usually loud So welcome to my talk on high performance image uploads the web edition a little bit of introduction about myself I'm a binash. I am a UI engineer at flipkart. I have been predominantly working on the flipkart light PWA and I recently moved on to the ads platform there I am a gamer a sneak ahead and and Biker and you can find me at Pistedfork at 88 at Twitter So let's jump right in. What's the problem at hand? So allow users to upload images while they were writing reviews for the purchase products Okay So the first version of flipkart light that was launched which allowed users to write reviews for the purchase products that did not allow them to upload images as well and the requirement that came to us was basically to Implement this particular feature and the stock is basically going to be my team's journey as to how we tackle this problem at scale So let's first understand the requirements. We needed to validate the image before we upload Sounds pretty simple. We need to handle the orientation Because when we are uploading an image, we want to show a thumbnail. We want to handle something called an orientation But we will look into it in detail We need to resize the image before uploading This is a standard feature provided by any file upload service and nothing expects and nothing new is expected here and Finally the insatiable demands of product and engineering that can you still try something better than this? Okay, so let's do this. We have the requirements. We are all the smart minds in this room So let's try to brainstorm as to how could we potentially solve this problem? Which might seem to be a simple problem initially at scale So we'll go through the requirements one by one. So the first thing was we needed to validate the image sounds pretty simple We take the image We might check the Extension the mime type the size and based on our constraints. We either let this go or we bail out pretty simple The next thing however is that we needed to handle orientation. So why orientation or why do we need to handle this? So when we upload a file or an image, we wanted to show the thumbnail for that image So the requirement crops up from there Okay, so before we understand how to handle orientation. Let's understand like what orientation exactly are you talking about? So digital cameras phone cameras these days They have a lot of sensors and they can collect a lot of metadata About the camera or the device with which the photograph is clicked and they can inject this metadata into the image The metadata that we are most interested in is called the orientation property Most of us here We are already aware of two standard values for this property for the orientation property, which is landscape and portrait But technically there are eight possible values You can think of it like an image is top bottom left right and the mirror of these four values So that makes it eight possible values We are not interested in actually going through the details of all those eight possible values But the ones which actually impact us Are those landscape and orientation property? So to understand how this metadata is put into the image How much of this metadata can be put into the image where in the image can I potentially find this metadata? We have to understand a little bit about the standard that defines this metadata and that Met and that standard is defined by something called as Xif which stands for exchangeable image file format I'll just read out the Wikipedia definition So Xif is a standard that specifies the formats for images sound and ancillary tags used by digital cameras canals and other systems Handling image and sound files recorded by digital cameras. Okay Too much but in a nutshell what we want is We somehow need to get this information About the device and maybe things like location and then somehow put it into the image file This is what the standard defines now this information could be things like your shutter speed your ISO your focal length thumbnails even as a matter of fact For example, this is a standard picture. It is tilted Purposefully and on the right you see a table listing out a few of these properties For example, you have to make the model the orientation will get into this ISO the shutter speed focal length and all of that So this is a Subset of what can potentially be put into the image as the metadata or the Xif data Just to add that Xif data is only defined for JPEGs. We do not have such mechanisms for other file formats Now let's understand why are we even doing all of this? Like why do we need to know that we understand what orientation means? Let's understand. Why do we need to handle orientation the first place? To understand that we have to get a bit deeper as to understand how cameras actually work So there are three columns here and the first column basically says what did the camera look like when you click the photograph? The second column tells you how did the camera save that image and The third column tells you when you viewed the saved image. What did it look like? Now let's focus on the second column here It says that when you click the photograph the camera was pointing Upwards and the four and the top of the image was pointing to the top of the camera and This is exactly how the camera is going to save it and this is exactly the same how you would view it right Now let's change the orientation of our camera. I tilted my camera. I click the photograph But before saving the camera the image the camera is going to first ensure that the top of the camera is actually pointing upwards So what you're going to do is actually it's going to rotate 90 degrees anticlockwise and then save it Now if you want to view the image right away, you would actually see it in a tilted manner But what is expected is that you should be viewing the photograph as it was when it was clicked Which means that somehow someone needs to tell you that this image has been rotated by 90 degrees counterclockwise You need to rotate it by 90 degrees clockwise so that the orientation is set Okay, and this is the reason why we had to handle orientation in the first place Now once we understood the problem we thought about well Do we have any existing solutions at hand this browser? actually give us something the answer is Unfortunately, yes We have a very simple CSS property called image dash orientation and if you give the value of that Property to be from dash image It would actually read the six of information and do all the heavy lifting for you But as a picture speaks a thousand words The not so humbling support for this particular feature Made this in made this information quite irrelevant for us So we quickly realized that we have to take matter into our own hands and do all this heavy lifting for our users So we had to extract this extra information somehow So what we did was we took this file that the user in selected and we rated asynchronously and as an Arabifer and Thanks to the file reader API by the way file reader API is a dedicated a web-based API for reading files and It allows us to read files asynchronously and potentially as Arabifer's to Once we have this Arabifer as we discussed that first we need to find whether except exists for this or not Potentially whether it's a JPEG or not If it is a JPEG, but still does it have exit information or not? We have a so many use cases Which means that we have to run a Computationally intensive loop on this Arabifer to find out if such use cases exist or not and if they do where do they exist and Depending upon the situations we clearly very quickly understood that running all of this code on the main thread is not going to work So this is just a sample code for how you're going to use a file reader API You have a file reader constructor you instantiate it and at the bottom you actually Pass the file and call readers Arabifer and you have an on-load handler which gives you the Arabifer in the result property Okay, so let's now look at how this code executes when this except extraction is run on the main thread Okay, so I want you to focus on the fact that let it run through one cycle actually So we selected a few images here. Now you imagine when you click on add image You see that the image is not responsive quite a it takes a lot of time for that bottom sheet to actually appear It's taking a lot of time and it's Intuitive right because you're actually taking a big Arabifer running a loop on it You're trying to find certain information and it is blocking the main thread Now the most intuitive solution to counter this problem is Somehow if I could delegate this heavy lifting off of the main thread Which is nothing to say Stop in a worker. So let's drop in a worker You can see that if I now click the add image. It is quite responsive because you Delegated this huge loop that you're running on the main thread your worker thread Everything remains same you get the file you read the Arabifer everything happens on the main thread But the extra extraction runs on a parallel thread But nothing comes for free So when we took a call that we want to keep our main thread quite free for users gestures Maybe if the application now has to pay a different cost because we added a new construct called web worker into our ecosystem So what could these potential costs be? The first thing is that there is a creation cost of a worker There's an instantiation cost that is involved when you ask the browser to create a worker thread Which could potentially spawn a thread behind and give it back to you on a decently sized device. It is around 40 milliseconds But this is not a really really big problem. Why because Technically as a developer I could build a worker pool Where I could have a set of X workers so that I do not create workers again and again, but rather reuse them So this potentially is a solvable problem to some extent But let's discuss about the bigger problem. So imagine that you have two context or two threads You have the main thread and you have a worker thread They have to communicate with each other correct like we created them for a reason and they have to communicate with each other and This is what exactly the problem is that there is a latency cause that is going to be involved the moment You start communicating between two threads Okay for the web developers here What is the potential most ubiquitous way that two threads communicate with each other anyone Message passing message passing of course and the API would be Post message perfect. Is there any other API? No, we want to talk about this go about communicating between two threads well Broadcast channel is one particular API that you can potentially use for you know communicating between two context or two threads But it makes sense when you have a lot of context and you want to broadcast it has a broad it does it has the word broadcast We just had to come context worker and the main thread. So we just stuck with post message, okay Now the most common way that post message works is called the copying mechanism for communicating data Which means that if you have two threads T1 and T2 and T1 wants to send over some data to T2 Then T1 first has to serialize the data It has to deep clone this data using the structured clone algorithm and Then send it over to T2 where T2 will now deserlize and use it now. It works very fine But the problem is the deep copying step Goes without saying that if your data that you're trying to send over is large This deep clone is going to take a lot of time Which would mean that your post messages start lagging in right Now given the status quo of web, do we have a solution? Can we get around this? Do we have something that will actually help us move away from this particular step and yet help us achieve our intent? The answer is yes That is implemented using something called as transferables so To understand transferables you can just think about that right now we were copying the data and sending over, right? In transferables instead of copying the data what you would potentially do is you transfer the ownership of that data Now imagine the data is the block in white and T1 and T2 want to communicate that data Instead of copying this white block and sending over to context You would shift the ownership of that memory block from T1 to T2 Which means that once this transfer is complete T1 will not have access to that memory block anymore and only T2 This actually helped because you are getting rid of the entire copying mechanism and your post messages are going to be faster and Thanks to the fact that these transferables actually is an interface and post message actually implements it So there is no new API for making this work if transferables are supported in the browser You can use it right away where you can pass the last argument as an array of these transferable objects So we realized that yes if transferables are available This is the way to go and we actually did a small experiment on a measly 1.7 to 2 MB sized image and We ran an experiment three times and to measure how much does cloning takes for the post message and how much does Transferables take for the post message and as you can see that transferals actually gives much more promising results Overcloning and hence we realized that yes if transferables are supported. It's a way to go So let's have a quick recap. What did we do till now? We made the user select an image. We read the array buffer out of it We created a worker. We asked the worker to compute the XIF orientation property and give us back and in the meantime we use transferables if supported so that this process is fast and This is what exactly looks like after all of this have lifting is done on the top You see is what would have the image looked like if we did not do any of this And at the bottom is the UI from flip cut light where at the end flip card I actually understands the orientation and adjust the orientation so that it looks in the correct orientation problem Okay, so the next problem was that we needed to resize our images before we want to upload it So you can imagine that you have an image of W by H and you want to resize to some other Other size of a by B, which is potentially smaller in size So this is exactly what the exercise was that you take the file But you do not want to lose the quality over it You are not reducing the pixel count in this particular image while the resize is going on But you want to just reduce the size of the physical dimensions of the image so This actually gave us quite a big bit of boost around the reduction in size potentially around 30 to 35 percent In the reduction of the size just because of resizing On top of that we took it to the next level where we started experimenting with resampling so resampling is like up sampling or down sampling or Where you can say that this is an interpolation process where let's say we were discussing about down sampling So what you'd potentially do is you take a set of pixels and you replace that with a single pixel which is an interpolation of all those pixels goes without saying that we have a loss of data and the fact that we are introducing noise to the system and Based on our knowledge about this domain and like we wanted to have a faster algorithm Which is going to give us more the outputs. We decided to use the Hermit resampling for it So the small flow is pretty simple We take the Arab upper we pass it to our algorithm which resizes and re-samples both and then give it gives us back From the Arab upper we want to create this image finally so that we can send it back to our servers So we use the canvas APIs for that and we have two APIs called the data URL or to the blob To extract the blob or the file out of it and then the UI can use it and this is what it actually looks like in the end that on the left is the Uploaded and the right is the one after resizing and re-sampling you can see a little bit of damage around the eyes The whiskers and potentially around the leaves edges Okay, so Since the beginning we haven't discussed about the fact that this has to be truly multi-threaded where the UI is doing nothing apart from the from the user gestures But since the few last few slides we have been discussing about canvas our reliance on canvas is too much So do do these two APIs can work in tandem can they work together and the answer is yes They can with the introduction of something called as off-screen canvas where you can imagine that you had a dumb canvas element and you had the abilities of the canvas like context drawing and everything and Off-screen canvas just decouples them now you have the dumb element separate and the ability to separate Using that you can now use these abilities on an object, which is very similar to the dumb element But it could work or run in a different context like a worker thread or something So something like this So you have an off-screen canvas construct constructor And you could just call it and then run whatever operations you want to do and this could offload all of your heavy operations from the main thread into a worker thread or You could have an actual dumb element in your UI and you could create an off-screen canvas out of it Using the transfer control to off-screen API, which can then run in an up in a worker thread But the beauty of this API is these two things are now linked Any operation that you actually do on the off-screen canvas object would actually relay those changes to the actual dumb element So now let's imagine the resizing and resampling working on the main thread versus something using the off-screen canvas I want to focus. I want everyone to focus on the thumbnails here When I selected a few images you can see that when I'm selecting few more images these thumbnails Haven't actually come up yet because it is running a lot of code in the background because it is actually running the resizing of these files But on the main thread Now let's see how this looks like with an off-screen canvas. I selected those images now Let it run through one more cycle please. Yeah, so let's select a few images and Now we select a few more images You can see that the thumbnails have actually arrived much faster than the one which wasn't using this off-screen canvas And it makes sense because it is running all of this code in a different worker context So summing it up. This is what our architecture actually looks like right now is that the user selects an image After that we extract the array buffer out of it and then we pass it to an worker pool if you remember we talked about Instantiation cost of workers and to minimize that we actually created a worker pool where this array buffer is sent and for each image We are actually spawning two workers one to run the Xiv extraction and one to run the resizing and the reason is these are concurrent these are Synchronous processes these are loops these are very heavy quadratic order n-square loops and they are not related to each other So there was no reason for us to run them concurrently But rather we chose to run them in parallel and once the Xiv extraction is done It would communicate to the thumbnail API the thumbnail react component or the component that we have that hey I have this is the orientation you can adjust itself and When the resizes over then it can communicate to the network utility that hey, I have resized this file. Can you please go ahead and upload? So, yeah, so this is it from my side. I actually have a little bit more slides around them a little bit of experimentation that we actually did around web assembly where Maybe we can just take a little bit of maybe a little two minutes more time where I would actually like to attribute this motivation to our native teams Where particularly my colleague nourish and when I had when I actually spoke with him He said that you know after all of this is done by the way This is exactly how the native flow actually also works Similarly, they say that you know after we do all of this sampling and all of that We actually encode our final image into weppy to further reduce the footprint and then upload it We had already converted a file upload into a research problem, then why not let's try if you can actually try this from web as well But the problem is we don't have a native encoder or decoder API in JavaScript is exposed by the browser And hence it was pretty clear that whatever we had to do we had to do it outside the realm of JavaScript And that is exactly what the motivation of using web assembly came into picture and No amount of time can do justice to explain what was in web assembly is But I'm trying going to try my best in explaining this in one single slide, which has three steps So you choose a low-level language, which is C or C++ or Rust for now and you write your Low-level code that you want to do Then there is a set of built-in tools that you have to use To build and compile your low-level code that you have written That build tool actually is going to spit out two files for you one is a JavaScript file and one is your actual Module that is going to execute and once you have this this module is actually going to run in the same JavaScript runtime in the browser, which is actually executing your application code as well It's very important to understand that web assembly did not push another runtime or a virtual machine into the browser It actually relied on the existing virtual machine inside the browser Which right now only executed JavaScript, but now it is extended to run web wasm or web assembly code as well So yeah, so this is what our exactly our experimentation is our I think we are seeing good results But I think our only potential Callout is the fact that these JavaScript files and these module files are pretty large for now and Hence on a mobile network and on a low-end device. It has to be really really It has to provide a good ROI for the fact that you are making the user download a much bigger module So I think in the new future when web assembly improves upon the size of these modules Maybe it would actually help and bring in a lot of goodness that native JavaScript wasn't able to offer in the first place So, yeah, thank you. Thank you for your patient hearing Questions. Oh, okay. Okay, sure Okay, we can we can have a discussion offline maybe Okay


Suspense. Presented by Roma Wines, made in California for enjoyment throughout the world. Salud. Your health, senor. The world toasts Roma, and Roma toasts the world. The wine for your table is Roma, made in California for enjoyment throughout the world. This is the man in black, here for Roma Wines to introduce this weekly half hour of suspense. Tonight in Hollywood, we are honored and happy to have with us one of the entertainment world's most distinguished gentlemen, Mr. Kerry Grant. The suspense play which stars Kerry Grant, and which is produced and directed by William Spear, is the exciting and tense bestseller by Cornel Woolrich called The Black Curtain. Suspense is compounded of mystery and suspicion and dangerous adventure. In this series, Roma brings you tales calculated to intrigue you, to stir your nerves, to offer you up a carrier situation, and then withhold the solution until the last possible moment. And so with the Black Curtain, and with the performance of Kerry Grant, we again hope to keep you in suspense. Well rather life began again for me, I guess you'd say, that day, on that street. My head was pounding terribly. I could hear all the noise and the people milling around. Everything was a jumble at first. Sir, now get back there, everybody back there.  Everybody let the doctor through, give him air here. No, I'm okay. No, never mind, Doc, I'm okay. Seems to be not in much to matter with you, sir. No, I'm all right. I guess I can talk to him now, Doc? I'll go ahead, officer. Just a bad bump on the head, I think. That's right, we can walk all right, can't you? Yeah, I think so. Sure.  Hey, hey, I'll be fine. Hey, wait a minute. What am I doing with an overgo now? All right, now, mister. Just so they got it on the blutter. What's your name? Where do you live? Townsend, Frank Townsend, 820 Rutherford Street.  Oh, no, thanks, I don't smoke. Well, I'll be getting back then. Drop in at the receiving hospital if you want us to take you off. Yeah, I will. Hey, here's your hat, mister. I found it. Oh, thanks, kid. That's all, now come on, move along. Guy's all right. Come on. I'm sorry about the fellow that got your wallet. Anyway, here's your cigar case, Mr. Townsend. Guy found it right alongside of you. Hey, wait a minute, this isn't my hat. DN, those aren't my initials, DN. Sure that's your hat. I seen it roll off you when you went down. Try it on. You see, it's this. But what am I doing with a cigar case? DN, same initials as the hat. That's the... Wait a minute, wait a minute. I'm trying to think. Where is this? What? This street. You're on Tillerie Street. Tillerie Street? What am I doing on Tillerie Street? He's lost. All right, now, sir.  It's cold and starting to snow. No, no, please, wait a minute. Don't leave me. Tell me. What happened? Well, you slipped on this icy sidewalk. Felt down and hit your head, good and hard on the curb. You're out for about 20 minutes and then you... Ice on a sidewalk? Well, look at it. That street cleaning department ought to clear away the snow. The snow and ice? Sure way. Snow? In July? July. Oh, it's December. December 1943. 1943. You better go on home, son. Good night. 1943. December 1943. The last I remember was July 1940. Three years just gone. Adnesia. A black curtain comes down over your mind. That black curtain had been over mine for three years. Where had I been? Who had I been? I hadn't been Frank Townsend. I'd been someone else. DN. Someone whose initials were DN. I walked along Tilleries Street thinking about it those three years. I could have been married. I could have been a thief. I could have... Something made me turn around on the street for a moment. That was when I first saw him. Gray eyes. He'd been talking to the cop who took my name. He looked up as I did. And then he started to walk rapidly in my direction. I backed away instinctively. Something about him spelled trouble. He called to me as he came forward. Hey, you stop Townsend! I instinctively knew I should run and get away from him. Hey, you! I looked back as I ran to the corner. He had a gun in his hand. He raised it. And I turned and ran for my life. What lay behind that black curtain, which separated Townsend from his past? With this remarkable story and with Hollywood's distinguished Kerry Grant as our star, the Roma Wine Company of Fresno, California tonight assumes the sponsorship of Suspense, Radio's outstanding theater of thrills. This is the dinner hour at an exclusive yacht club in Latin America. And we discreetly eavesdrop on that gentleman and his lady there at the table. This has been a lovely dinner, Ramon. And only you would have thought to have such a delicious wine as the finale. It was so perfect. Is it truly a wine from California in North America? Yes. See? This is the noted Roma Port of California in the United States. We were fortunate to have it tonight for now in time of war. Only occasional ships can bring us Roma wines. I knew that you would. Fortunate? Yes. Roma wines please the exacting tastes of wine lovers in many countries. And we in the United States are most fortunate of all. For we can enjoy any of those delicious wines from the famous Roma wineries located in choice wine districts throughout California at prices unbelievably small for wines of such distinguished character. Because we do not have to pay heavy shipping costs and duty, here at home in America, Roma wines cost only a few cents a glass. What's more, you will find Roma California wines just around the corner at your favorite dealers. Right there waiting for you now, the types of Roma wines you most enjoy. So if you haven't yet discovered the delight of Roma wine regularly with meals or when entertaining friends, make your first purchases of Roma tomorrow. R-O-M-A, Roma, America's largest selling wines. Made in California for enjoyment throughout the world. And now it is with pleasure that we bring back to our sound stage Mr. Kerry Grant and the Black Curtain, a story well calculated to keep you in suspense. Why was he following me with a gun? What did Grey Eyes want with me? I must have done something. I beat it on the subway and hid. I had to think it all out carefully. I knew I was on the spot for something. Grey Eyes meant business. What could it be?  Well, maybe I've been a gangster and he was one of a mob that wanted to rub me out. I didn't know. No identification of a wallet stolen. Nothing in my pockets that would help. Just D-N in the hat and D-N on the cigar case. D-N! My head was aching with worry. My stomach had panic in it. I didn't know who I'd been, what I'd done. But how? Where? That's where I'd been when I woke up. Tellery Street. Well, maybe Grey Eyes would go back there too, looking for me. But I had to take that chance. Tellery Street. Couldn't see under that hat at first. Oh, yeah. You know me? Sure. What can I get you, son? Well, you got an evening paper I could look at? Nope. Sorry. Never read them. Too much trouble in the world these days, anyhow. You haven't been around two or three weeks. Oh, well, I've been kind of busy. Look, Pop. I made a bet with a guy that even though you see so many customers, you'd walk right up and give me my full name. Oh, well, I'm sorry. I don't know it. I don't think I ever heard your name. But I know your girl. My girl? You do, huh? Well, maybe I can still win my bet if you'll give me her name. Gee, I've heard you mention it. I'd know it if I heard it. Well, see if I can steer you a little. Now, is it Mary? Nope. Alice? Lillian? Ah, Margaret. No. Wait a minute. Wait. I know Ruth. That's it, Ruth. Ruth? Yeah. Well, sure, you got it. Now, now, what's Ruth's last name? Gee, I don't know her. I know where she lives, though. You do? Yeah, right across the street. The Tilery Apartments. Well, that's right. But now, now, what apartment? What's the number of Ruth's apartment? 3C. Apartment 3C. Say, that's pretty good if I do say so. I was only there once. Remember? The night I brought the sandwiches over... Yeah, well, thanks. Will you win your bet, mister? What? Oh, yeah, yeah, I think I will. What's your name? So I'll know it next time. I'll tell you tomorrow. I hope. So long. So long, Pop. Thank you. I'll be... What's the matter? Nothing. Nothing, I... Just tie him a shoe. I'd just been going to walk out when I saw him standing across the street gray eyes again. I took down behind the store window and watched him. He looked over in my direction and then up and down the street. Oh, then he did a cigarette and stole down the corner. The minute he disappeared, I yanked the door open, dashed out, ran across the Tilery Apartments and went in. I'm here twice today. He may be in the neighborhood right now, for all you know. Oh. Oh, well, flattery, of course. Has he got gray eyes? What? Yeah. Did you ever see a detective that didn't? Oh, sure, sure. Danny, what's the matter with you? You're acting so strangely. Well, I... I just want to look at you. You seem so different, so far away. You haven't kissed me. Well, that's easily fixed. Oh, darling, where have you been for three weeks? All around. Miss me? You know I did. Oh, Danny, do you suppose... do you think we could get away tonight? I've got $3,000 saved up. We could go to Mexico or South America. We could get married. Mr. and Mrs. Daniel Nearing, tour of the world. Daniel Nearing? Yeah, and wife. Sounds plenty good to me. Oh, you will never know how good. We'll get out of here tonight. I'll call up and tell him I'm quitting my job. I'll say I'm sick. All my stuff's here. Nothing's out there but a couple of uniforms. I'll make Almond Franklin a present of those. Almond Franklin?  Maybe they weren't glad when it happened. A couple of vultures by bite of them. All with you back, Danny. Just think with my $3,000 we could...  Absolutely, I think so. I was never cut out to be a nurse, anyway. I guess you weren't. Any more than I was cut out... Any more than you were meant to be a secretary. That's right. Well, I never wanted to be a secretary. Just drifted into it, I guess. Kind of got on my nerves, especially toward the end. You know, the boss was no cinch to work for. He certainly wasn't. He was a rat.  Yeah, that's right. I'll accept the old man. Oh, yeah, the old man. I sort of liked him, didn't I? He loved you, Danny. I think he wished you'd been his son. Poor old man. He's the only reason I've stuck around out there this long. How are things out there? Oh, they've been questioning all of us. They've laid off lately, though, since you... Oh, Danny, don't let's talk anymore about it. You're back. That's the main thing. I just want to forget New Jericho and the whole... New Jericho, huh? Yes. Oh, if only it hadn't happened. What hadn't? You know what? Oh, Danny, what's going to become of you and me? I wish I knew. Danny, get away from that window. Leave that shade down. He's down there. Who? Grey eyes.  He's coming in here, in the building. Oh, did he see you? Ruth, will you help me? What are you going to do? I'm going to give myself up. No, no, don't... Well, it's better than getting shot at. What can they do to me?  The chair? What do you think happens to a man when he's guilty of murder? Ruth, listen to me. I'm not a murderer. If the whole world says I committed murder, I say I didn't. The me that's in me says I didn't. I never said you were, Danny. I always said you didn't do it. I hope you hadn't run away. So that's it. You come here, Danny. Why? Ruth, wait. We've got to get out of here. How about the fire escape shaft? Dom Wader. Dom Wader, come here. I'll get in. I'll stand on top and work the ropes. I don't think it can hold us both. Got to. Can you hear me? Yes, yes, Danny. We're going back there to New Jericho. New Jericho, baby. I've got to. I've got to find out. We're going together. No. No, Danny. No, I've got the money. We can get out of here. No, stop it. From here on in, we're sticking together. They're going to take me back there. Back where it happened. All right, darling. It's crazy, but I'll go wherever you go. I can't lose you again. On the train, Ruth and I said very little to each other. While I hid in the telephone booth at the Pennsylvania station, she bought us a couple of cheap overcoats. I sat hunched up in mine, thinking. Ruth had brought along the newspaper clippings. I looked at what they said for the 20th time, trying to see if there was anything there that would help me. Dietrich Slayer's salt, it said. The secretary wanted him brutal slaying at suburban estate. Police are pressing the search for Daniel Neering, secretary and the employer of the late John Dietrich 58, member of a well-known local family who was shot and killed in the drawing room of his new Jericho estate on the morning of November the 7th. Neering disappeared on November the 7th on the morning of which date he is known to have had a bitter quarrel with the deceased. This last was attested to at the inquest by Elma and Franklin Dietrich, widow and brother of the murdered man. Well, I had all the facts now. Wanted for murder. And yet everything that was in me told me that no matter who I'd been, however many memories I'd lost, that I was no killer, that I couldn't have. I had to get into that Dietrich house and stand again in the room in which it had all happened. Maybe something would come back to me. Maybe there would be... Nothing to do in town. I came out to write some letters. Let's go then. Oh, Danny, I'm scared. Please, let's not stay out here. You said you loved me. I do, Danny, I do. That's why I'm scared. They're only going to the village. They'll be back in half an hour at the most. Come on, open the door, Ruth. Hurry. I've got to see the inside. That room, the place where it happened. It's wrong, Danny. I'm telling you, you're wrong. Open the door, Ruth. Quickly. Now, let's have a look at that room. Please, Danny, please don't. Don't talk about it. This is where I'm supposed to have murdered John Dietrich. Danny, please. Where was it? Show me exactly where it was, Ruth. I've got to know. He was standing by the grandfather's clock when... Why are you going crazy, Danny? If they get you, you'll hang. Why, the clock? You still believe in me, don't you, Ruth? I believe you, Danny, but I'm scared. I love you. Ruth, wait a minute. What's that? It's only the old man. He's asleep in that room off there. Don't go in there, Danny. You'll wake him. I want to see him. No. No, don't, Danny. He can't help you. You know he's paralyzed and he can't talk. Turn on the light. I want to see him. You walk him. It's me, Mr. Dietrich. Ruth. This is Danny. You remember Danny, don't you? Hello, Mr. Dietrich. See how his eyes are shining. Yeah. Was he here when it happened? You know that, Danny. Why do you ask such funny questions? He's in a bed here for five years. That mirror. On the wall there. The clock. Look. You can see the grandfather's clock in the other room. What are you getting at, Danny? He could see it. The old man could see the murder through the mirror. If only he could talk. He can't talk. You scare me, Danny. He saw the man who killed John Dietrich. Look, look. He understands what I'm saying. He's blinking his eyes. Oh, stop torturing him, Danny. You can't just see what you're doing. Danny's trying to say something. Look. Look. His eyes are blinking. He's gonna help me. Go outside and watch, Ruth. Go on. Now watch out at the entranceway. Be careful, Danny. Please, they'll be back in a minute. Alright, leave me alone with him. I'll call if I hear them coming. Look now, Mr. Dietrich. Don't be afraid. I'm gonna ask you a question and you're gonna answer me. Are you trying to tell me something about the murder?  Blink twice if you are. And that's it. Once. Twice. That's good. Did you see it happen? Here, in your mirror. Blink once if the answer is no. Twice if the answer is yes. Once. Twice.  You saw it. Now then, is the murderer in this house? Danny, Danny, they're coming. Franklin and I, my God, are here. Run, Danny, run. Is the murderer in this house? Blink once for no, twice for yes. Yes. In this house. Danny, Danny, they're coming. Wait, wait, I've almost got it. Now, Mr. Dietrich, was it me? Once for no, twice for yes. Was it me? Get out of here, Danny, into the big room behind the curtains. I'll talk to them. Alright, alright. Thanks, Mr. Dietrich. I'll be back. Is that you and Father's room? Yes. Are you here alone? Oh, yes. Why? No, he thought we heard voices. What are you so jittery about, Ruth? I'm just tired, that's all. May I go to bed now? Father's still awake, Ruth. He'll go to sleep alright. I'm going upstairs, Mrs. Dietrich, now. Good night, Ruth, and take your flashlight with you. Oh, I'm sorry. It was dark on the road tonight. Good night, Ruth. Good night. She's brought him back here with her. He might think. Who? Dan? Oh, Franklin. Take it easy. If he's here, we'll get him. After the evidence we gave against him at the hearing, I... Oh, I'm frightened. Let's get out of here fast. I'll go to the village for the police. Call the police. No, I'll do it. Hello? Hello? It's too late. It's dead. The wire is cut. Come on, we'll both drive to the village. But he may be waiting for us out by the car. Uh-uh. Oh. What? Yeah. What are you doing there, Franklin? I think I just might need my gun. Come along. The moment they left the house, I made for the old man's room. I called for Ruth, but she was gone. Maybe Franklin and Elma had caught her after she cut the telephone wire. But I couldn't wait. My life was hanging on minutes now. I shot the flashlight on the old man's face. Now, Mr. Dietrich, you're helping me fine. You know I'm trying to save my life, don't you? Now, the murderer. Was it me? Was it me who did it? Me, Danny Neering. Blink once for no. Once. Once. Oh, you're sure. You're sure it wasn't me. Oh, you're smiling, Mr. Dietrich. Smiling. Now, it was somebody in this house. Then who was it? Oh, can't you make a sound? Help me, you've got to. Was it Elma? Twice for yes, once for no. Once. Not Elma. All right, then. Was it Franklin? Up with the hands, Neering. Up, but you'll never get a trial. Franklin, look, you've got to listen. You've got to.  I'm trying to kill the old man, too, huh? The murderer returns to the scene of his crime, huh? You know I didn't kill him. Now, you tell that to the police. Elma will have me in a couple of minutes. Where's your girlfriend, Ruth? She's not here. I don't know where she went. Never mind. They'll find her.  You killed my brother and beat it. Where'd you get out of it? I thought it was puzzle-less.  You've gone nuts, too.  To get his share of the estate and his wife, Elma, amongst other things. But you can't stop with killing me. Someone else knows the truth. The old man saw it in the mirror.  The old man saw it? How do you know? He told me. Oh, you're lying. He can't talk. He can't even move. He can hear. And he can blink his eyes. Come over here and look. Now, look here. I don't... Ruth! He'll be all right. I heard him.  Here's the gun, Danny. Take it. Oh, Ruth, you shouldn't have. In another minute, I... I'm not sure it was Franklin. Oh, Danny, darling, please. Let's run for it. They'll be here in a second. It's your last chance. I'll swear you did it. Not if I can be with the old man in another half-minute. Mr. Dietrich. Mr. Dietrich. It's Danny again. No, Danny, don't. Don't. All right. Tell me, Mr. Dietrich. Was it Franklin?  Blink once if he did. He's afraid. Oh. Why are you afraid? Oh. Oh, there's this gun here. Take the gun, Ruth. You take it. He's afraid.  But what's the matter? Why don't you answer me? Who killed John Dietrich? It wasn't me. It wasn't Elma. It wasn't Franklin. But someone in the house. Was it Ruth? Ruth! You! I told you. I told you not to come. Oh, I love you, Danny. I wanted you. I wouldn't have let them get you. Why? Why, Ruth? Why did you kill him? He was always after me. He wouldn't leave me alone. I hated him. Then that night he came at me, threatened me. Said he'd kill me. If he couldn't have me, nobody could. He had a gun. I got it away from him. We hit the clock. He leaned against it.  It was the day you ran away, and I was crazy. They thought it was you. They started looking. I love you, Danny. I still love you. I begged you not to come back here. Ruth, put down that gun, Ruth. No. Stand back, Danny. Stay over there. I just want to look at you. I was hoping we could get away together. But you've been through enough, Danny. Not because of me. Now you're clear, Danny. And this is going to clear me. I guess that's about all there is to tell. I tried to put it all behind me. To resume my life where I left off over three years ago. Sometimes when I get to it evening, I go and walk along Tilleries Street. Once in a while, somebody, somebody I don't know, will say, hello, Danny. And I just say hello and walk on. I don't want to find out anything anymore.  And it will. All except Ruth. Because somewhere behind that black curtain, I was loved and loved someone. We must have known a love that I'll never know again. So closes the black curtain, starring Mr. Kerry Grant, tonight's tale of suspense. Since the beginnings of history, people have enjoyed wine. Ages ago, our ancestors found that wine made any food taste better. Wine is a simple pleasure that anyone can enjoy. That is why Roma has devoted all its wine-making skill to producing wines of fine quality at a price that means you can enjoy them often. Just a few cents a glass. Don't feel that you need fine crystal or a special occasion to serve Roma wines. Next time you have a quick supper, serve Roma wine in plain tumblers with your spaghetti or cold meats. And notice how much more enjoyment and zest it adds to the meal. Serve Roma wine often, cool or chilled. You'll quickly discover why Roma, R-O-M-A, Roma wines are America's largest selling wines. Yes, Roma wines are true to type. Roma wines are faithful in flavor. Roma wines are sound of character. Roma wines are reasonable in cost. Made in California for enjoyment throughout the world. Our thanks to Kerry Grant for his suspenseful performance here tonight. And Mr. Grant wants us to say that he will be listening with you next week at the same hour to Mr. Robert Young in the story called The Night Reveals. Don't forget then, next week, same time for Robert Young in Suspense. Presented by Roma wines, R-O-M-A, Made in California for enjoyment throughout the world. This is the Columbia Broadcasting System.