So, yes, my name's Robin, I'm the creator of Vizzy Cities, and over the next half an hour I'm going to give you a sort of a rundown of what Vizzy Cities actually is and an overview of some of the key lessons I've learned while I've been building it. So if you have any burning questions or comments during the talk please direct them to my Twitter account, that's at Rob Hawkes. Otherwise, we'll hopefully have time for maybe one or two questions at the end, but if not, I'll be around today and tomorrow at the event and feel free to grab me either here or on the Slack channel as well, so I'll be there too. So as a little background, my history is in programming, combined with graphic design as well, so combining those two to solve interesting problems. And I've previously worked at both Mozilla and Pusher as developer relations, so talking about sort of cutting edge web technologies, sort of travelling the world doing that. And today my days are spent running Vizzy Cities as a company, trying to create an open source company, as well as doing consultancy work around geospatial data visualisation. And if I do happen to have any spare time, I like to relax with really nerdy games like World of Tanks and Hearthstone, so if anyone plays those I'd love to talk about them later. It's probably only like one person. However, you're not here to sort of hear about all of that, so taking a step back, we know that cities require things on vast scales. Food distribution systems, reliable energy, transport networks, healthcare, civil protection, water systems and all sorts of other things, and they all work independently of each other. And if one of them failed, it could potentially bring down multiple parts of the network. To ensure that cities are chaotic, they're complex, and they're awe-inspiring, they shouldn't work but they do, and you can't fully control them. What makes it even more important to be able to understand them, not only so we can make them work more efficiently, but also so we can understand their complexity as the citizens living within them. And there's a huge amount of powerful data locked away within cities, it's in places like data.gov.uk in the UK, as well as a large number of other private and public repositories. And what if you could create a tool that allowed you to take this data and allowed people to see real-world cities and overlay data upon them, a tool that helped them unlock some of the data and combine it to better understand their cities and their place within them. So it turned out a tool like this already existed, it's the game SimCity. In SimCity you create your own fictional city from scratch and you manage every aspect of it. And it gives you a data view that allows you to peel back that city to get a much better understanding about how it works and more importantly why it's not working so you can then go in and fix it. But it's just a shame SimCity is for fictional cities. So what VizzyCities aims to do is effectively do the same for real-world cities just without the game aspect. So it's keeping a SimCity-like balance of practical, beautiful data visualization and a great user experience. So the 3D platform that VizzyCities has takes data like this, which is raw open street map data, and it uses it to generate and visualize real-world cities in the browser in 3D. But you can do much more than that. So VizzyCities was actually the first in the world to publicly visualize the London Underground network in 3D too. And actually not only visualizing the London Underground network in 3D, but also the live trains and the positions that they're in right now. So this is a video, but if you looked at this live you would actually see the trains where they are right now in London. And they also looked at visualizing the London bus network in similar ways and approaching things slightly differently. So not using straight lines between bus stops, as most people do, but actually using the real road network and having live buses moving around them. And thanks to the guys at Plain Finder also looking at things like air traffic. So visualizing 3D air traffic in a city and kind of fulfilling that goal of bringing a city to life. But you can also do more basic things like using LiDAR height data to produce 3D terrain maps. So this is very useful for doing things like flood level analysis. So you can raise the water level five centimeters, half a meter, five meters, and see as a citizen what's going to happen around you. And I've also looked at heat maps and other more traditional visualization techniques to allow you to just get a better understanding in your local context so things like, I don't know, education, crime levels, pollution, and even using them together to compare and look for correlations. So it's important to be clear that Visicities is browser based, so it requires no plugins. It works out of the box, it's using WebGL, and modern computers, modern browsers, even mobile phones support it. And this is a massive difference to existing tools that allow you to do these kind of things because they're usually desktop apps that only work on single platforms like Windows. In fact, if you didn't know already, Visicities is an open source project under an MIT license. So all the code is on GitHub, and please feel free to go and poke around with it and learn how it works and look at some of the solutions that I talk about today. So it's been over two years since Visicities started, and I've learnt a bunch of important lessons during that time. There are too many lessons to fit into a single talk, so I've tried to pick and choose my favourites. But make sure to come talk to me if you do want to hear about some of the more random ones, like working out where a city actually starts and finishes, like how big are cities, that kind of stuff. And each of these lessons could actually be an open talk in their own right. So in the interest of time, I'm going to give an overview of each one rather than delving too deep into them, especially I won't be going into code, because you don't really have the time to take that in right now anyway. So you can find that all on the GitHub. So let's get cracking with lesson one. Data quality is a pain in the bum. I'm trying to find the more polite way of phrasing that. So buildings were the first challenge regarding data quality, and they're very important if you want to visualise a city because it's made of buildings. And in fact, the challenge still exists today. So to sort of put this into perspective, you could use ordinary survey data in the UK, and it's free. It's quite simplified, which does mean it's quite inaccurate, so these don't really look like buildings. And it can also slice the buildings up into multiple parts because it uses this kind of grid system. So you get this issue in the middle where you have buildings that are split into four different parts, even though they're just one building, so it's not great. It also has no heights, so if you're trying to do things in 3D, you can't really know how tall they are. And the performance is good, actually, because of the low level of detail. In comparison, you have OpenStreetMap, so many of you have probably heard of OpenStreetMap. It's free, and often it can be more accurate than data from other places because it's hand drawn by people. But then again, the quality is unreliable and inconsistent because of that exact fact. It is however constantly updated, and it does have some heights. So in this example, the red buildings have heights, the blue buildings have floor levels, which you can roughly equate to heights. But it does have performance issues due to that higher level of detail. Another issue is that data is provided in many different unrelated formats. So, for example, a lot of government data is provided in Excel spreadsheets, and geospatial data can be provided in a number of different formats like shape files, arctis files, geojason files, CSV files, or something entirely different. The point being that there's no consistency to that data. And combining all of this data can be a long and arduous process. So when making the 3D London Underground demo, I had to deal with a bunch of different problems. For example, all the data I needed was hidden away. All the data was provided in different formats. I had to manually merge the data because identification conventions between different departments of the same company were different or unreliable. So I was literally spending a whole week of evenings hand converting and combining all of these different Excel spreadsheets. The Transport for London API is unreliable. It's slightly broken, and it's in XML. So it's verbose, it's complex, and it generally doesn't give you good data for real-time analysis of trains. Combined, this made what should have been a relatively simple task if we were using a nice web API. It turned it into many weeks of unnecessary sort of hair pulling. So lesson two, cities are huge. So it turns out cities are far bigger than I expected. And honestly, someone could have told me that before I started. I just kind of didn't realise. Maybe I was too complacent. So I attempted to initially render the entirety of London as a noble goal. It turned out to be a vast area. I mean, I live in London, and it's got a huge number of buildings. We're talking many millions of buildings. And the screenshot here isn't actually all of the London borys, which is what I wanted to originally visualise. And I actually stopped at this point because I just realised what an impossible task this was. So the first solution was to actually crop the area that you're visualising. So you can see one part of the city at a time. And it's sort of like a plinth that updates as you move around. And it worked, and it looked nice. Though it was kind of clunky as an experience, and it introduced another bunch of problems related to how it was rendered as well. So the second solution, and the one that I've settled on, is introducing a method of scrolling around. So it's kind of infinite scrolling. Very much like Google Maps of what you're used to already. And this was the method I settled on in the end. And though it was not as visually impressive, it solved basically all of the problems and meant that I could have a rough idea about how many buildings could possibly be visualised at one point in time. And I'll touch on some of the specifics on how this was implemented in a further lesson. So lesson three, use third party data APIs wherever possible, unless you're made of money. So while using OpenStreetMap is great, the data for the entire planet, which was the Gulf of Izzy Cities, tops 300 gigabytes, and this updates minutely. So it's not ideal for serving and hosting yourself. So is it possible to get this kind of data dynamically without hosting it yourself? So the original solution came by using something called the Overpass API. Now this is an external JSON and XML endpoint to OpenStreetMap data. And Overpass allows you to send a request for a specific OpenStreetMap tag, which is like building or road, that kind of stuff. And then you also give it a bounding box in geography. So you get back a lovely JSON response of all the data you need. And the byproduct of this is that you get worldwide support out of the box and you benefit from the minutely updates of OpenStreetMap. So seriously, if you edit something in OpenStreetMap, you will see it in Izzy Cities within like one or two minutes. It's insane. And the sub-lesson I learned doing this was that spamming this Overpass API, which was kind of meant as a gesture of goodwill to the community, not for businesses to completely over abuse, was that if you send it a ton of XHR requests, it kind of shuts itself down and stops you doing anything else. So that wasn't good for Izzy Cities. So it generally caused delays as those rate limits ended up being like one per user per second. So it took a long time when you're trying to load like 50 tiles in five seconds. So the great thing was that by already using stuff like promises, I managed to, sorry, to manage the XHR requests, I was halfway ready to kind of solving this issue. And the final piece of the puzzle was to use something called froats.js, which was to limit the number of concurrent requests that you're making at one time. So you can take control and load resources as and when you're ready and without abusing the external API. So any rate-limited API could benefit from something like this. So since then, I've moved on to more robust WebE APIs for OpenStreetMaps, stuff like the MapsN vector tile service. But also things like CartODB and MapBox, they offer a variety of solutions as well for geographic data, particularly if you want to store your own and host it externally. So lesson four, accurate height data is rarer than rocking horse poo. If I lived in New York City, I wouldn't really have a problem because they've decided that they want to give away all of their height data for all of their buildings for free. That's fantastic. I don't live in New York. In the UK, it's much harder to find those building heights. As I mentioned, OpenStreetMap has varying levels of detail with height. You get some buildings in the ones in red that have height and others that don't. But you can couple it with an educated guest to see or predict height for other buildings. But actually, if you are from the UK, there is good news. The Environment Agency released LIDAR height data for most of the UK this week. This is huge because it now gives you centimeter-accurate height level data for both buildings and terrain across the majority of the UK, and it's all for free. My hope is that other countries follow suit because this is the hardest data set to get, and it's one that's really bizarre that people don't release it because they have it. So lesson five, converting geographic data into 3D isn't actually that tricky. One of the first problems I encountered was how to turn these geographic coordinates or building outlines into pixel-based coordinates and also 3D. The math involved to achieve this is not that simple, and it gets even more complicated if you're considering different geographic projections, so if anyone knows about that, you know that it can get confusing quite quickly. So fortunately, the Proj for JS library is here to kind of help you convert coordinates, and it's fantastic, and it's quite a small library, and it allows you to convert from practically any geographic projection into 2D screen space. And the second part of the puzzle is to visualise those objects in 3D. Now, I chose free.js, which is a popular and easy-to-use WebGL 3D library, and by combining Proj for and free.js, you can quickly convert these geographic coordinates into 2D shapes in a 3D world, and it's cool, but it's not what we want. The final step is to use a feature in free.js called Extrude Geometry, which lets you stretch these 2D shapes into fully-fledged 3D objects. And it's quite amazing how adding that third dimension suddenly makes that city kind of pop and come to life in front of your eyes. So lesson six, quantity and performance are mortal enemies. So one area that has proven to be a pain time and time again is working out how to visualise as many buildings as possible without causing performance issues. So one early approach I took to improve performance was by splitting the entire world into a tiled grid, much how I mentioned previously. So this is exactly how Google Maps do things. And it allows you to load data in small tiles that are eventually used together to build up a complete image or an entire area of a city. And it solves one part of rendering sort of rendering large numbers of buildings instead of loading an entire city in one go because you only load the tiles that you can actually see. So if you do things like turning around, the tiles behind you disappear. But another problem that existed even with tiles was that complex 2D shapes inherently cause a lot of strain when rendered as 3D objects, particularly on mass. So what's interesting is that you often don't notice this complexity, it's actually unnecessary in the data. So particularly when you're zoomed out as well. So why keep that complexity? And to get around this, I use a library called simplify.js. And it dynamically reduces the complexity of 2D polygons before you render them, basically. And it's a great little tool that allows you to keep the general shape. So it still looks like the original shape, but it just has a lot less complexity. So it means that you reduce the render cost and it allows you to effectively render more objects, or in our case, buildings with little to no change in how those objects look. So lesson seven, don't lock up the browser. So we can now render tens of thousands of buildings. Fantastic. But how do you actually process all of those buildings without locking up the browser? So the solution is to use web workers, which is offloading complex processing to a separate browser thread. And what this means is that you can lock up a web worker as much as you want. And yet the main browser process, your app UI, will basically stay silky smooth and responsive to everything that's going on. So instead of getting sort of dirty with web workers, which actually aren't that complicated anyway, I went with the operative library so I could basically use some of the helpers for handling common situations. And in busy cities, each tile is handled by its own worker. And what this means is that the entire processing pipeline from taking geographic coordinates to constructing 2D shapes to constructing 3D objects is all handled within a web worker and it doesn't block the browser. So instead of having a noticeable difference in frustrating delay in browser responsiveness, you now have this smooth experience where the user can continue to use your application and continue to do things like selecting text or clicking and just kind of actually using the app. So if you don't know what you're doing with web workers, as I didn't when I started, it's easy to introduce a new problem and a new lockup which is passing large quantities of data back from a web worker to the main browser thread. And to get around this, you can use a nifty little feature called transferrable objects. Now, these are basically buffered arrays in JavaScript and they allow you to effectively hand over the keys of the data from the web worker to the browser. So it never has to be copied. It's just the permission is passed across. So it's an instantaneous process rather than a long process when you're copying. So lesson eight, request data once and only once. So this was quite a simple lesson, but one that still proved quite troublesome to solve correctly. And it originates from data being requested multiple times as you're loading all of these different tiles. And also the data sort of being reloaded again as you refresh the page. It's a waste of bandwidth and it's also a waste of the user's time as well waiting for all of this stuff to load. So how do you know what you've already requested and how do you make sure you don't request it again? So the approach I currently use is far too simple and it's basically just an in-memory cache in JavaScript that stores buildings as you move around, but it disappears when you refresh. So if you go back to another tile that you've already downloaded buildings for, then they're pulled from this cache and you don't have to load them again, but only if you don't refresh the page. And what I plan to implement next and what I advise that you do is implement a more robust cache that utilizes local storage functionality in browsers. So things like indexedDB and WebSQL. And there's a great library called local forage by Mozilla that allows you to sort of shim a lot of these APIs. And what this allows you to do is effectively store this data outside of your website or your page. So when you refresh the page you can re-request that data and start from where you were. So it's great for building offline applications. So lesson nine, decouple the architecture. So how do you create a large application that's extensible and easy to maintain? I didn't know how to do this when I started. I'm used to just tinkering with things. So two aspects that really helped me with decoupling the architecture were using the mediator programming pattern but also modular architecture. So modular architecture such as common.js is really useful for breaking apart your application into small components that you can require in as necessary. So if you've used Node.js packages you already know how this works. The mediator pattern is pretty much published and subscribed API which is great for managing communication between these disparate modules without having to pre-program how they should communicate amongst each other. But the problem is that you need to be careful because you can't guarantee what order these messages are going to be received in by the other modules which is particularly important when you're doing things like rendering things in a browser. And I advise that you check out Addy Osmani's excellent book on how to implement pretty much every common programming pattern in JavaScript and there's links in the slide which I will put into Slack as well. And promises are another technique which have proven incredibly valuable particularly the Q library and there are many other promise libraries but this is the one that I use and they allow you to defer the handling of processing until a later date by accepting a promise and that promise is that a predictable action will occur in the future and it encourages an asynchronous approach but it also encourages you to continue working away at something else while you're waiting. And what I've found most useful is that it lets you avoid messy nested callbacks and vastly simplifies the flow of your application and the readability of your code too. So lesson 10, large projects can be a nightmare to manage. So I've never been one to care too much about process or code quality, testing or even making sure things are done right which would be pretty bad if I worked in an agency but I don't. As I said, I'm a tinkerer and I prefer learning and seeing results rather than spending time on what feels like wasted time kind of building these processes and not actually doing the result. And it turns out my tinkering approach doesn't really apply too well to large web applications that require consistency and robustness. Who knew? So it didn't take long for it to become a faff to manually process these files to create new builds every time to generate single JavaScript files with all the modules and all the external dependencies and to serve the examples and the breakthrough for me was adopting just these simple build systems but now I use Grunt in Visicities but I actually use Golpin projects that I've started more recently and Grunt allows you to run a simple command in the terminal to do things like automatically test things and concatenate and minify your files ready for release and I also use it to serve the local build and to auto refresh the examples when you're in the browser. Now I'm sure most of you already know about Grunt but if you're testing it you can look at the Visicities code because the Grunt file is there and it shows you everything that I use it for. Now for automated testing I use Mocha combined with Chai, Sinon.js and Slimer.js which I'll touch on in a minute and each of these serves a slightly different purpose in the automated testing process so Mocha is used for overall testing framework basically sorry, an assertion library that allows you to write more readable tests so it's basically just the words that you're using to construct these tests and Sinon.js is used to fake application logic and basically use these things called Spies to track behaviour and to track processes as they happen and then Slimer.js is used to run client-side tests in a headless browser from the terminal and Slimer.js I chose because it also supports WebGL so theoretically you can basically test graphics at the same time my experience is that it's slightly funky so don't rely on that and then combined using something like TravisCI to make sure I don't break anything when I push all the changes to GitHub it runs all these tests automatically so it performs all the linting and the tests and when the changes are pushed including pull requests for many other contributors it all kicks off and tests everything and what's even better is that it integrates directly with GitHub so it automatically performs these tests whenever a contributor adds a pull request so I know that there's an issue or that there isn't an issue and that it's safe to merge this pull request if I want to So lesson 11 make sure you actually improve things so this was a hard one because you're constantly tinkering away at something but how do you know that you've actually made things better or worse the simplest approach is to just monitor performance in frames per second so one way to do this is with something called FPS meter and it's good for an overview but it's not super reliable the best way to track framerate is to actually use built in frame timers in browser development tools and these timers are useful for getting a general indication of parts of the application or parts of the usage of an application that are locking up the browser or preventing frames from rendering at a fast pace so for example this is how I worked out that I needed web workers because all of a sudden the browser just stopped for like 12 seconds so I was like what's going on but for more in-depth analysis to actually work out exactly what's causing it you want to dig further into the development tools so in my case I've been having a lot of success recently with things like the timeline and profiles tools within Chrome the timeline is particularly useful because it gives you a detailed overview of everything that happens in a single browser frame so it allows you to basically see what's taking up the most amount of time and see how that cascades up the various processes that are calling parts of your application so most recently I used this to confirm and fix an issue where I had an external event amid a library which was causing a dramatic slowdown but only when there were lots of objects in view so it was fine most of the time which is why I didn't see it and when I opened it in the timeline you could see these massive frames so when I switched out the library like literally that's all I did is try a different library and rechecked everything in the timeline each frame now took 17 milliseconds rather than 160 so it's having that assurity if that's a word that something has changed and you've actually improved things that makes a massive difference and these tools are incredibly powerful once you learn how to use them particularly the profiles view as well which gives you an idea about memory usage as well in your application so I highly recommend that you learn about them and I have included a link to some of the really good Chrome documentation on how to use these so overall just don't sacrifice your enjoyment in pursuit of perfection this is more a general life rule but I found that about a year into the project I started taking it far too seriously and I forgot why I was actually doing it and I lost track of what I enjoyed about it and I ultimately felt like it was a chore to continue working on it so really make sure to take the time to do what needs to be done while also ensuring that you continue working on the things that you want to work on the things that you enjoy most about what you're doing so I managed to get back into the swing of things by experimenting with new technology so stuff like virtual reality and putting that into busy cities so I got to strap what looks like an Xbox to my head and just get excited about it again and whatever you find that does that whether that's trying a new library or writing tests or stuff maybe you've been putting off but would sort of prevent you from enjoying the project again then definitely do it because it's amazing how quickly you can get that spark back again if you just give it the chance so I'm afraid that's all I have time for but as I mentioned please grab me later like honestly happy to chat about whatever I've spoken about or anything that I do if you have any questions or just want to chat you can find out more about busy cities at the website which is visitities.com follow the project on Twitter which is at busy cities or like I said just grab me and thank you very much for listening


Item Number – SCP-224 Object Class – Euclid Special Containment Procedures – Item SCP-224 is to be stored in a sound-proof enclosure with acoustic destructive interference nodes. Nodes must be replaced on a weekly basis by remote means due to the erratic nature of SCP-224's effect. Non-class D personnel are not to enter the enclosure. Additionally, SCP-224's enclosure must be kept free from moisture to avoid rapid oxidation. In the event that the clock begins to chime, all personnel must evacuate the area and the location should be secured following procedure ZYT 77. Description – SCP-224 is a wooden grandfather clock, accented with a black lacquer and gold leaf. Markings, remotely observed, date its origin at the end of the 19th century. Though internal examination of its components has been done, the density and construction of its gears make method of function impossible to interpret. The hands of the clock do not move with any known consistency, though the tendency seems to be generally clockwise. Additionally, chimes occur at non-regular intervals, ranging from approximately one minute to several months. To further complicate matters, the numbers on the clock also have a tendency to move and shift, though they generally retain ascending order. Each chime has an anomalous acoustic signature that causes a drastic localized temporal acceleration. People and objects in range of the sound begin to age. The amount of time is not consistent with the chimes, ranging from essentially inconsequential amounts to several years, though the amount aged during any single event is consistent for all objects within the field of effect. SCP-224 was originally found in the R-Antique shop and purchased by Mr. R-as a gift for his wife. When brought home and wound, the anomalous properties were noticed, though not acted upon, both apparently considering the object broken. Their bodies were discovered in their collapsed house two days later, aged significantly. Foundation personnel monitoring the house took interest, and SCP-224 was subsequently recovered. Foundation agents were unfortunately lost following exposure during transportation. Any instances of SCP-224 retaining any numeric pattern for an extended period should be reported to Dr. Locke. Failure to do so will result in suspension and possible demotion. Addendum SCP-224 Catalogged Incidents Due to repeated errors on the part of the maintenance crews working on containment for SCP-224, Dr. Simmons insisted that the following report be spread among the on-site work crews to fully stress the importance of SCP-224's containment. After its circulation, it was added to the primary case file for historical purposes. Today, I had the pleasure of informing Agent R-as that he is to be given retirement pay and is free to leave active duty as of this evening. It was not initially approved by Director R-as until I explained the circumstances. Agent R-as, who is the father of Alice and husband of Mary Lee, was walking past the SCP-224 containment facility on Friday, March 17, 1981. He was reporting to his supervisor's office to deliver the final report on SCP-224, which he was instrumental in helping acquire. Because SCP-224's effect is so unpredictable, he had no way of knowing that the object had activated until the acoustic dampening equipment failed, leading to the collapse of the wall. At this time, said agent was exposed to seven iterations of SCP-224's effect. The first one saw him age into his mid-thirties. Those of you who have seen the video are aware that this wasn't a drastic change. However, by the second exposure, he was now well into his forties. There was significant graying of hair. By the third iteration, he was balding, and we estimate his age reached into the early sixties. By the fourth, his skin had noticeably wrinkled, with liver spots appearing in several places. By the sixth iteration, Agent R-as collapsed due to a broken hip, fracturing several ribs, and his left arm. It was at this time that he lost control of his bowels and bladder. When the seventh iteration ended, containment had to be manually re-established. At this time, said agent is estimated to be over a hundred years old. As a note, Agent R- volunteered for termination and examination of SCP-224's effects should the retirement pay he was now technically entitled to be rewarded to his family. I heartily thank Director R- and said agent for giving us this opportunity to study SCP-224's effect. I hope you'll remember in the future that while some SCPs kill immediately, others do not. Others leave lingering effects that have ramifications for the people and the families of the people who are subjected to them. Dr. Rosmusson was down the hall from Agent R- He is now a 35 year old man in an elderly body. Dr. Researcher Jessup, who was pregnant when she was exposed in the same incident, died when her child was forced through her abdomen. Her son is a 40 year old man with the mind of an infant. Dr. Quinn's undiagnosed case of bladder cancer consumed his entire abdomen in a matter of moments. Please keep these incidents in mind before failing to replace the perfectly fine acoustic nodes in the containment enclosure. Dr. J Simmons, Head of Containment, SCP-224 Lesson complete. If you missed the previous orientation, go watch SCP-223, a photo album, right now. Or for the complete course, watch this playlist.


We are going to talk about Sri Lanka. So I don't know if you guys are following the news and watching the news, but this is, I think, making headlines everywhere, at least those news outlets that cover world affairs. Sri Lanka is basically in a state of collapse. Yesterday, on Saturday, the presidential palace and the office and home of the prime minister, all occupied by protestors. I think the home of the prime minister was set on fire. This is after months and months of demonstrations. This is after people all over. OKON discount expires tomorrow, Shahzabat says. So sign up today. Is there a link where people can sign up to do that? But yes, OKON discount expires tomorrow. Shahzabat was at OKON. He was at, I think, both of my shows from OKON, or just one of them I can't remember, but that was great. So anyway, Sri Lanka falling apart, as I said, demonstrations since March, food prices going up through the roof, not just inflation at above 30%, but inflation of food dramatically higher than 30%, and we'll get to why. But it's not just prices going up, massive shortages of food staples like rice. So we're like a huge rice producer, and there are shortages of rice. As I said, we will get to why that is in a few minutes. You've got fuel, people lining up, long lines for months now to get gasoline to be able to drive. The country in June last month defaulted on foreign debt. It says like $50 billion of foreign debt. About 15% of that is to China, but the rest is to Japan and a lot of private investors, a lot of private bondholders. The country is decimated. It's worse than I think the Greek crisis was in 2011, not in the sense of its maybe global implications. Greece is at the heart of Europe, and part of the European Union had implications for all of Europe, particularly for Germany. And on the upside for Greece, there was an obvious partner for bailout, which was Germany and the rest of Europe here. Who's going to bail these guys out? And it's much worse. There's literally starvation. I think I read somewhere 80% and 90% of Saudi lancas are skipping a meal, which I guess these days is considered healthy, skipping breakfast in particular. And Sausage Lanka is in free fall. The economy is in free fall. The president and the prime minister, given that their residencies are being occupied, have resigned. And so they're going to form some kind of unity government. That unity government is going to try to negotiate with the IMF to try to get a deal for bailout. But such a bailout will require massive changes and a dramatic reduction in the standard of living quality of life, I think for a long time, in Saudi Lanka, as it pays off its debts and restructures its economy. So what happened? Just a few years ago, in 2018-19, Saudi Lanka was considered one of the strongest economies in the world. I'd say pre-19, so maybe 16, 17, 18, it had grown, was growing at very high rates of growth. It was considered a middle to high-income country. It had a GDP per capita, I think that's double, at least double that of India. It was an economy on the rise. It was being praised for its success. And we'll talk about why it had done so well, what had led to that.  What happened? So to understand kind of what's happened, I want to go back, give you a little bit of history. I know some of you, at least, like the history stuff. A little bit of history. It's modern history, so it's not, I don't know. Sri Lankan history, so I only know kind of its modern history. But we have to go back to the late 1970s, early 1980s. And the launch of a terrorist campaign, a civil war, you could call it, within Sri Lanka that started. There are basically two main ethnic groups in Sri Lanka, the majority and then the Tamils. Both are variations, I think, of Buddhism. But the Tamils were a minority and felt like, and I assume this is true, that they were discriminated against and did not have opportunities and did not have any political say. And as a consequence, they launched, in a sense, a civil war and a terrorist campaign, maybe to try to establish independence, or at least to try to establish some say in the politics and the economic life of Sri Lanka. And I don't know why I'm saying Sri Lanka. It's really Sri Lanka, S-R-I, Sri Lanka. This war, which was quite devastating, and I've seen estimates in the tens of thousands of deaths as a consequence of this war, it lasted 30 years until 2009. In 2009, two brothers, the president at the time, his name was Mahinda Raja Paksa. And I apologize if I am slaughtering the name Raja Paksa. Of course, Sri Lanka was a British colony by the name of Ceylon C-E-Y-L-O-N. And it changed his name when it gained its independence. Anyway, the president was Mahinda Raja Paksa. And his brother, Gautabaya Raja Paksa, was the defense secretary. They basically launched a brutal, unyielding campaign against the Tamils. They did what you need to do in order to destroy an insurgency. They did what you need to do in order to destroy terrorist activity. They were brutal, but they were incredibly efficient. And they basically brought the Tamils to their heels. In 2009, the Tamila Tigers basically were destroyed, capitulated, and the civil war was over. Both brothers became obviously heroes after stopping this 30-year war. I don't know if you know this, but I think it's the Tamila Tigers who really made, I don't know if they invented it in modern terms, but they certainly made popular in the modern world the idea of suicide bombers. So the Tamils were the first, I think, based on my readings, the first suicide bombers in modern annals of terrorism. The Muslims learned it from them. So 2009, Mahindra was president. His brother was Defense Secretary. And they became heroes. And indeed, from that point on, the Raja Paksa family came to dominate Sri Lanka politics. Mahindra served two terms as president after he left the presidency. His brother, Gotabaya, became president. And indeed, Gotabaya was president until yesterday when he resigned. In the meantime, Mahindra went from being president to being prime minister. So they controlled both of the key positions in the Sri Lanka government. And they controlled many of the other departments. They had two other brothers who were ministers in the government. One of them has a son who is another minister in the government. Basically, these guys controlled the entire political structure in Sri Lanka. And it's quite evident that they participated in and were part of an incredibly corrupt regime where they got incredibly rich at the expense of the Sri Lankan people. They were treated as heroes because of the victory over the Tamils, and therefore were granted, I think, a wide berth in which they practiced their corruption. They also had wide control economically and so on. Anyway, from 2009 until really 2020, although the economy got into some trouble in 2019, but until 2020, the economy grew at significant rates, getting up to 6%, 7%. Growth, it was one of the fastest growing economies in the world. Generally income rose, standard living rose, quality of life rose across the entire country to the benefit of its citizens. Now, two sources for this economic growth. One, peace. Peace is an important component of economic growth. Peace allows one to invest. It eliminates uncertainty. It provides for some, if not a lot, a foreign investment. So that was one. Second was a dramatic increase in commodity prices, commodities that are really agricultural products that the Sri Lanka was very good at producing and exporting. So we saw prices go up of rubber. If you remember, well, I don't know if you remember, maybe you know this, Ceylon, rubber was discovered in Brazil in the Amazon. And during the 19th century, a lot of people, particularly German immigrants to Brazil, became very, very wealthy off of their rubber plantations in the Amazon. Indeed, Manaus, the city in the middle of the Amazon, was one of the richest cities in the world. It was one of the first cities in the world to electrify, provide electricity. It built a magnificent upper house, which still stands a beautiful, magnificent European-style upper house that would invite upper companies into the heart of the Amazon to perform there. It was one of the richest places in the world because of the immense rubber plantations. During, I think it was World War II, maybe before, but certainly during World War II, the British sent a spy to Brazil. And basically, they stole. I mean, I guess you could call it stealing. Basically, the Brazilians protected the rubber plant from they didn't want to export the plant because they wanted to maintain a monopoly over it. So the British stole the rubber plant and took it to the Far East, where it was planted in places like Malaysia, I think Indonesia, and Ceylon, which, the advantage of Ceylon, is I think it was never occupied by the Japanese, and the British could continue to produce rubber in Ceylon. Of course, rubber required for jeeps, for cars, for basically for military equipment, for military, for running the war. So Ceylon became an important hub of rubber production in the world and has exported a lot of rubber. But also, the other thing that Ceylon, if you've traveled the world, you know that Ceylon T is incredibly valuable. T, and we'll get back to T later because T plays an important role in this economic collapse. T is, Ceylon T is what got it all over the world. And that was another major, major export from Ceylon, so T and rubber were two, and those prices were going up during the early 20 teens, and as a consequence, the Ceylon economy did well. In addition to that, there was some liberalization of the economy, and farming was particularly productive, and the economy was doing well. The Sri Lankans are generally well-educated. They have supposedly a fairly good health system. Life expectancy is longer than it is, for example, in India. Again, wealth is dramatically higher. So all of that was true, but then add to that a massive binge of debt. So the Sri Lankans borrowed money like crazy. They borrowed it from anybody who would give it to them and they borrowed it and invested dramatically in infrastructure, roads, bridges, airports, and ports. One of the reasons Sri Lanka is important and maybe is making the news more than you'd expect is, you know, FIT says socialized health care and education, yes, but some socialized health care systems are better, some are worse. Supposedly there's etymology and better in the same education system. Maybe as an inheritance for the British, particularly the educational system, probably as an inheritance from the British is a well-functioning educational system. Again, health care and education, not as good as it would be in a private market, but relative to other socialized countries, supposedly pretty good. Relative to other Asian countries, supposedly pretty good. So they went on a borrowing binge, lots of money. Lots of money paying for lots of government employees, paying for lots of subsidies to their favorite industries, their famous farmers. Lots of money flowing in. I mean, one of the beauties of infrastructure projects, construction projects, is their wife for corruption. These are the kind of projects where politicians get suitcases full of cash to put on the side by different contractors who are bidding for projects. The multiple ways in which you can benefit from these projects, and Sri Lanka was building all over the place. And I was getting to why it's strategically important. One of the main strategic, or not one of the, the main reason Sri Lanka is strategically important is that it sits a little south of India, southeast of India. And in that sense, it sits on the main shipping channel from Europe, Africa, to East Asia. Any ship leaving China or Japan or any of the Eastern Asian countries, Taiwan, South Korea, heading towards Europe, heading towards the Suez Canal and into Europe has to pass by the waters or just off the coast of Sri Lanka. Not Sri Lanka, Sri Lanka. And of course, any ship traveling to Africa, though trade with Africa is not that great, has to pass through those waters. So this is a key strategic location, key strategic ports. And one reason why Sri Lanka became a part of the One Road Chinese Initiative and the Chinese lent quite a bit of money to the Sri Lankans. It's only about 15% of total debt, but quite a bit of money. And as part of that, China owns a massive port in Sri Lanka, which is part of this back and forth of, which is part of this One Road Silk Road, if you will, the Silk Road, the renewed Silk Road effort by the Chinese. So Sri Lanka is strategic, it's important and invested hugely in infrastructure. And for a while, you know, that was fine, but then, but then, basically, I don't know, one, two, three things happened that started to alter the framework or alter the projection for Sri Lanka. First, well, before I say that, let me just say one more thing important. One of the major sources of foreign exchange for Sri Lanka, one of the major sources of revenue, one of the major sources of employment in Sri Lanka is tourism. Tourism is a major source of revenue in Sri Lanka. It's got beautiful beaches, amazing hotels. By the way, two of the largest, two of the largest sources of tourism for Sri Lanka, just this side, we'll get to this in a minute, are Ukraine and Russia, particularly Russia. So Russia is used to love to go to Sri Lanka for vacation. It is, of course, warm, it's tropical, it's a beautiful place. And if you have a little bit of money, it is a great place to vacation and probably not as expensive as many other places around the world. So tourism, a major factor in the Sri Lankan economy, and then two things happened that destroyed the tourist industry for Sri Lanka. One, in 2019, I don't know if you guys remember this, but there was a massive terrorist attack in Sri Lanka, 230 something people were killed, were murdered, by Islamists, suicide bombers. There was a small group of Islamists, of Muslims living in Sri Lanka, relatively small, it's called the Easter attack, relatively small group, but had been radicalized quite a bit with Saudi money, like everybody is radicalized, right? And some of those radical Islamists, I can't hear how many suicide bombers, but they went in and they targeted the tourist industries, they targeted hotels. So as a consequence of the terrorist bombing, tourism plummeted in 2019. It was starting to recover towards the end of the year and into 2020 when COVID happened. And of course COVID basically drove tourism to zero, or close to zero in Sri Lanka, which devastated the Sri Lankan economy. So you have a major source of revenue, a major source of foreign exchange, a major source of livelihood for Sri Lanka, it's devastated by the coronavirus, by COVID, and by the restrictions on travel, by the restrictions on travel. And as a consequence, and as a consequence, Sri Lanka was starting to get into trouble in terms of, could it pay its debt? There was some talk about maybe Sri Lanka should default, but if Sri Lanka's decided they would not, and they started prioritizing debt payments on their massive, I think $50 billion of debt, over imports and over the things they needed, this of course created a massive decline in standard living and quality of life and problems in the Sri Lankan economy, just accumulated and built and God was. You could argue that, it has been argued of course that then with Russia invasion of Ukraine, gas prices going through the roof, food prices, particularly things like wheat going through the roof, that that was kind of the tipping point, that tipped it, Sri Lanka could not afford to import the gasoline, it imports all its gas, it imports a lot of food, things like wheat, it has a robust agriculture, but it's not the kind of country that produces wheat, it primarily produces rice and vegetables and as I said, tea and rubber. So you suddenly got a spike in prices and all its foreign reserves will be spent on buying produce, buying gasoline, but mostly paying off its debt, paying interest on its debt, not even paying off its debt, paying interest on its debt. So all of this is happening, which is pretty devastating and pretty horrific to the economy and declining quality of life, declining standard of living. Applejack, thank you, really appreciate it. And then last year, in April last year, they kind of topped us off with one of the dumbest policy decisions in history, just unbelievable, right? So this is what they do. Now, it depends on your interpretation, right? It depends on your interpretation, why they did it, two possible reasons I'll get to. But basically in April last year, the president announced that they were banning the importation of chemical fertilizer into Sri Lanka. They were banning all chemical fertilizer. Now just to be clear, two-thirds or more than two-thirds of the island's farmers, I think it was, sorry, 80% of the island's farmers were using chemical fertilizers. 80 to 90% of its tea farmers and rubber farmers were using chemical fertilizers. And suddenly overnight, it became illegal to use such fertilizers. Now, why? Well, you could argue there are two reasons. One, the public reason, the reason the president gave. And second, maybe a hidden reason. So the public reason was environment. Chemical fertilizers are bad for the environment. They pollute the rivers. And health chemical fertilizers make the food bad. This move was an attempt, according to the president, to convert Sri Lanka into the first country maybe in the world that is 100% organic. This was presented to the world, to Sri Lanka, as this massive attempt to meet Sri Lanka's healthier, cleaner. And of course, it also helps with climate change because fertilizer is based on a chemical process that produces CO2. So in this massive attempt, in one day, to convert the entire country to organic farming. In one day, now note that organic farming is hard, it's labor intensive, to actually do it at scale is super knowledge intensive. That knowledge did not exist among the farmers. Maybe some farmers, 10%, 20% of them. There was no organic fertilizer to replace the chemical fertilizer that the president could offer in its stead. And basically what happened is that the farming industry in Sri Lanka collapsed. A third of all agricultural land went unplanted in the summer of 2021. A third, crop yields from the areas that were planted dropped by 40%, 40% and then you get a food shortage and then you become dependent on Ukraine, on Russia, for grain. I mean, Sri Lanka should be an exporter food. It is an exporter food, it was exporting rice. Now it can't make enough rice for its own people. All in the name of organic farming. All in the name of environmentalism.  Sri Lanka presented itself as this virtuous country is what hailed by places like the World Economic Forum by Nobel Prize winner Joseph Stiglitz as this is amazing. This is terrific, this is what the whole world should be doing.  But in some sense, this was faster and dumber but all in the same, in the name of some kind of amazing virtue. They're gonna become the world standard. This is more of the environmentalists' destruction of human life, environmentalists' destruction, living standards of life because people don't have food. There's not enough food. All in the name of organic, go-ganic. Now organic, organic agriculture. And I'll get to the other reason why the Sri Lanka government probably did this. We'll get to that in a minute. At least they presented to the world as the reason for this was environmentalism, going green health, truly sad though. But it's interesting, right? That one thing we know is that organic farming produces dramatically lower yields as we saw in Sri Lanka, about 40% lower. Even when it's done well and in Sri Lanka it was probably done not as well as it could have been. So, what you need is in order to grow the same amount of food you have to go down a much faster area. So first, organic farming is lower yield. To grow the same amount of food you have to so-called, quote, destroy a whole section of the environment in order to plant more. Ultimately, it turns out that in terms of CO2, in terms of whatever you wanna call it in terms of the environmentalist stuff, organic farming is no more so-called clean than is chemical farming. Chemical farming is just unbelievably productive. It's much cheaper using chemical fertilizer, sorry. All right, another reason, another important reason where Sri Lanka switched to organic was that all of its chemical fertilizer were imported and it was running out of money to buy stuff. So, at least one reason and maybe ultimately the dominant reason why Sri Lanka dropped fertilizers was they couldn't afford to buy them anymore. And they couldn't afford to buy them anymore because they had bankrupted their own country. They had borrowed without thinking about tomorrow. They had built up a pyramid of debt layering on a top of layering it. They had created an economy that was built in corruption and on debt. Projects, infrastructure projects were built which had no ability to return, to provide a return on investment. Sri Lanka was already a failed state, but this idea of going organic was the thing that tipped it into starvation. They stopped producing food. Now think about it. The two, number one exports in Sri Lanka were tea and rubber. Exports in tea and rubber plummeted because they weren't producing enough. That made the foreign exchange problem worse because there was no income and now how are they gonna pay that debt? So, as I said in June, Sri Lanka defaulted on its first debt payment. It's gonna have to restructure its debt. The IMF is involved. They'll have to restructure the economy. Quality of life, standard of living is gonna drop precipitously.  This is going to be ugly. And this is the consequence of a combination of irrational, environmentalist policy with irrational borrowing of money. See how one for a minute just expand beyond Sri Lanka?  It's a mess. It's a disaster. People are going to suffer. And I feel sorry for the people there. People are gonna try to leave. I think you can expect the migration out. The question is where do they go? Maybe it's a British colony. They'll try to go to the UK. There's a former British colony. They'll try to go to the UK. But you can expect a decade now of real problems in Sri Lanka and a horrific economy. Now, Sri Lanka has reversed the organic plan. They first eliminated the ban on importing chemical fertilizers for the tea and rubber industry. Then they did it across the entire spectrum for all of it. The problem, of course, is now they don't have the foreign currency to import the fertilizers. And now they're stuck where they could import the fertilizer, but they can't. It's legal to import a fertilizer, but they don't have the money to do it. On top of that, the government now, because of the outcry from the farmers, has committed $200 million to pay the farmers for losses due to the organic collapse, plus another $201 million of subsidies, food subsidies, which alone puts Sri Lanka in more debt, which is only gonna make the collapse even more painful. I mean, there's just no way out of this. This is a disaster. It's a disaster caused by the political class in Sri Lanka. It's a disaster caused by people who borrowed money with no regard for tomorrow, no regard for their own people, people who got rich off of the backs of their old people through basically bribery, fraud, corruption. So I feel sorry for the Sri Lankans. Unfortunately, this is probably not gonna be the only country this is gonna happen to. While I think this organic stupidity, irrationality, evil, is unique with regards to Sri Lanka. I don't think other countries bought into this nonsense, but you're already seeing countries like Zambia. What was the other country? You know, other countries, I think in Africa, you'll see other countries like South Salvador in Central America, even though South Salvador is considered a libertarian because they went on Bitcoin, but South Salvador's in big trouble. And I don't think the Bitcoin collapse is helping them. And you'll see other Latin American countries, but certainly Zambia are in Zimbabwe, which has been in trouble for a long time, but these countries are in massive debt. There's no easy way for them to get out of the debt. They have not put together the policies that would get them out of debt in a healthy way. They are all in the verge of bankruptcy. Other countries could join that list, ultimately. Ultimately, Italy could be in trouble, Greece could be in trouble again, although Italy's probably in worse shape. A Turkey goes in and out of trouble. You know, other countries have masses, amounts of debt in Asia. Even China is not in good shape economically, particularly given the consequences of COVID. And of course, the United States is not in good shape. We have masses amounts of debt, high inflation, not as high as Sri Lanka were 30%, but high inflation and the world economy is in real trouble. This is what we're seeing right now. By the way, one of the things that Sri Lankan government did when it couldn't raise debt anymore, right? When the debt was so high, it started printing money. It started printing money like crazy, as governments like this do because they're desperate, they have to pay their bills locally. They can't get in front of exchange, but they can at least do it locally. And as a consequence of paying it, printing all their money, what happened? Well, inflation. So, global economy is in deep trouble. Developing countries are in deep trouble. Countries that relied on debt to finance themselves are in deep trouble partially because interest rates are so much higher. So the interest payments they're gonna have to make in the future are so much higher. And the only way they can fund, that they can pay the debt is by refinancing it, which raises the interest rate constantly in an inflationary environment. But also because given the bankruptcies, given the defaults of places like Sri Lanka, debt is gonna become more expensive, particularly in developing countries. It's gonna become more and more expensive. You're gonna see the global economy probably not shrink, but grow dramatically less than expected. And you will see significant consequences significant consequences around the world. These things always start in little countries in the middle of nowhere that nobody pays attention to and nobody seems to care about. And they tend to, those tend to be the canaries kind of in the coal mine. And then given the debt burden, by the way, one of the big countries that is on the brink of defaults, we'll see if they actually default or not default, is Pakistan. Pakistan is a massive country. It is a country with a huge population and it is a country that is economically, again on the verge of default together with all these other countries. So you'll see significant decline. And of course, think about what's happening in Ukraine. Think about the Russian economy. Think about the money that's gonna have to be spent to rebuild Ukraine and to ultimately to rebuild the Russian economy. Where is that money gonna come from? The world economy is heading towards a very, very difficult decade. A very, very difficult decade. Again, with inflation rising interest rates recession and defaults in the periphery. Remember that the people who lent money to these countries are people who live in relatively rich countries. This all hampers their wealth. It reduces the amount of wealth that they have. This is bad news across the board. All right, that's the spiel about Sri Lanka. I thought you'd be interested. It's going on right now. Thank you for listening or watching the Iran Book Show. If you'd like to support the show, we make it as easy as possible for you to trade with me. You get value from listening. You get value from watching. Show your appreciation. You can do that by going to iranbrookshow.com slash support by going to Patreon, subscribe star locals and just making a appropriate contribution on any one of those, any one of those channels. Also, if you'd like to see the Iran Book Show grow, please consider sharing our content and of course, subscribe. Press that little bell button right down there on YouTube so that you get an announcement when we go live. And for those of you who are already subscribers and those of you who are already supporters of the show, thank you. I very much appreciate it.


Hi I'm Tom Wolfe. It's time to rebuild the middle class in Pennsylvania and that starts with three priorities. Jobs that pay, schools that teach, and government that works. We all know the challenges Pennsylvania faces. We're staring at a 2.3 billion dollar budget deficit. We're near the bottom of the country in job growth and our schools they're struggling. I believe that Pennsylvania can have a bright future but we cannot simply do the same things over and hope for different results. We need to think differently and do things differently. It's time for bold change. My budget makes historic investments in education while eliminating the deficit. I've proposed the Education Reinvestment Act that will restore funding for schools and make natural gas companies pay their fair share. My budget will cut school district property taxes by more than 50% for the average homeowner. It will also lower corporate tax rates by 50% while closing tax loopholes. And I will work with the General Assembly to create a fair funding formula so that all students are assured the same opportunities to receive a quality education no matter where they live. To rebuild our middle class my budget cuts taxes to spur the growth of good family sustaining jobs. It invests in education to prepare our kids for the 21st century economy. And it makes government more efficient by cutting costs and doing things smarter. So the taxpayers can feel confident that their tax dollars are being spent wisely. We need to do big things to rebuild Pennsylvania's middle class and get Pennsylvania back on track jobs that pay schools that teach and government that works. These are my priorities. These are our priorities. Now let's get to work.


Then it's my pleasure to introduce the second speaker of the session, Jorge Villar. Thanks for the introduction. So I'm going to talk about these families of matrix problems that were introduced in crypto 2013. But in this case, we aim to enlarge the family of problems that can be modeled with this handshake framework. And just to introduce the family, I'll give a short overview of it. This is the now almost a standard notation for these kind of problems. We use additive notation because it is very convenient to perform algebraic operations. So we use this bracket. Where's the pointer? We use this bracket notation because it's very convenient for matrices and vectors. Also, we use the same notation for pairings. This subindex, t, means that this element, for instance, is the generator of the target group, rise to the x plus y power. Then to start introducing the problems, actually we thought about the generalization of the classical Diffie-Hellmann Decisional Problem and the Linear Problem. And then they can be included in a very wide family of problems that we call subspace membership problems. We start with a family of vector subspaces of fixed dimension k in a vector space of dimension l. Then in this family, we can pick just one of these subspaces at random and then... What's the wrong? Excuse me. Just a pointer. The question is that the traditional problem is turning apart a random vector in the column span of the sub-space from a random vector in the whole space. It's a subspace membership problem. Typically, this is implemented taking a matrix. Each subspace in this family is defined as the column span of a matrix, a full-rank matrix. And then you can, for instance, consider the DDH problem or the tooling problem specified in that way. So you can see that you can rewrite these problems as matrix problems. They're defining a matrix depending on parameters. For instance, DDH is defined by this one column matrix with this one and the only parameter is this a. But the tooling problem uses two parameters, a1, a2. You can generalize these two other problems. So you can see that we use the columns of the matrix as generators of the vector space. And then the vector z is either a random linear combination of the columns or a random vector in the space. Let us define what we call matrix distribution. That is just a collection of matrices depending on some parameters. So we call matrix distribution to a collection of matrices or a probability distribution among the matrices. All the matrices have the same size, L times k, with k less than L. And we consider that the matrices are sampled using a polynomial map, this polynomial map f of constant degree. I mean the degree does not depend on the security parameter. The vector restricts to the case L equal to k plus one. So the matrices are almost square because otherwise if L is greater than k plus one, we have fewer tools, algebraic tools to evaluate the security or the hardness of these problems. And also we focus on linear polynomials because for the applications we need this kind of restriction because then given a matrix a, we can extract the parameters a1, a1, a1, ad. And this is very convenient. Otherwise, again the tools to work with these problems with greater degrees are very limited. So these are the examples. I commented before about the Diffie-Hellman and two linear problems. So the general definition of this MDDH problem, the decision MDDH problem is this one. So we start with a matrix distribution, this a of td is a vector, a vector of say d parameters. And the problem is turning apart this random linear combination of the columns of a of t from a random vector. And then we study this is the work in crypto 2013. The hardness of this problem depends in the generic group model of the properties of this determinant polynomial. That is the determinant of the matrix with adding a new column of variables. So this polynomial is a polynomial in the parameters of the distribution of the matrices and the parameters corresponding to the last column. Then there are some no instances about of these MDDH problems, the uniform matrix and the linear but also the cascade and the symmetric cascade were considered. We observe that the number of parameters is very different although the size of the matrices is comparable in this case all the sizes are identical but we can range from a fully randomized matrix with a lot of parameters k times k plus 1 to a matrix with a single parameter. So it has a very compact representation because to specify the matrix you only have to store one group element. So there are lots of applications in these three years, lots of applications about different construction of different primitives and protocols were introduced. And the main question is that you can almost always replace the linear, the tooling assumption by an arbitrary MDDH assumption. So let's move to the main contribution of the talk that is trying to generalize this construction, this framework to a computational problem. So there are some problems related to indistinguishability problems like semantic security etc. But to capture the other notions like enforceability or soundness in generalist arguments or binding property of commitments typically we need computational problems, search problems and also typically with more than one possible solution. It's what we call flexible computational problems. Then we are generalizing this previously known framework of MDDH problems to the computational version, I mean the flexible problems. So we start again with the collection of sub-spaces of dimension r. I changed the dimension here, instead of k I use r. And what we do here is not a membership problem but a sampling problem. So the question is having some sub-spaces from which it's difficult to sample a vector. Because I'm forcing a signature or a rational proof means generating some element in a set and we model this as sampling a vector from a hidden sub-space. So typically we use the left kernel of a matrix A or the kernel of a transpose. So if the size of the matrix is L times k as before then now the dimension of the kernel is the difference assuming that A is full rank L minus k. So we define the kernel MDH problem in this way, we give a matrix distribution and from this matrix distribution the problem is finding a non-zero vector of the kernel of a transpose. Then we can start with some examples, for instance the DDH and the two linear distributions. They define kernel problems but the first problem is trivial because we can always find our orthogonal vector of the vector 1A just by exchanging the two components and changing the design of one of them. But this is not easy to do with the two linear kernels because we have to find a vector that is orthogonal to these two columns simultaneously and for instance if we try to find explicitly this kernel we can see that with group elements we cannot complete the vector x1, x2, x3 in a non-trivial way because we need to compute products of elements that mean solving the computational Diffie-Hellman problem. So this is why these problems are considered hard and are useful except for the case k equals to 1, in the case of k equals to 1 the problem becomes trivial. So are there other examples? Yes, the first result is that if the MDDH problem is hard, the decision problem is hard, then the kernel Diffie-Hellman problem is also hard. It is what one expects when we define a computational problem related to a decision problem. If the decision problem is hard then the corresponding computational problem is also hard. So every example of MDDH problem gives us another example of the kernel Diffie-Hellman problem. This is the proof but I think it's quite straightforward. If finding an orthogonal vector in the left kernel of A means that one can just tell apart what we call the real distribution in the MDDH problem from the random one because computing the pairing of the solution X of the kernel MDH problem with a challenge vector, this pairing gives the trivial element always if we are in the real distribution or it gives a random element which is the neutral element of the target group with negligible probability. So we have all these families and the question now is, there are actually some problems used in the literature that are indeed inside this wide family of computational problems. Ranging from this fine red problem to the one flexible square Diffie-Hellman problem. And the last applications appear in the papers are the homomorphic signatures, quasi-adaptive non-interactificial knowledge proofs, capital commitments and structure preserving signatures. Some of these applications, I will introduce this idea two years ago but people were referencing the paper in Ibrint but we are now presenting these results which in part are quite old results because it corresponds to two years ago but the hardness results are presented in this talk. One of the main reasons why these problems are useful is because they can be used to build a compiler from a secret scenario into a public key one. In this case, for instance, if we start with designated verifier proof of membership of a vector X to a sub-space, the column, the sub-space, the column span of M, then we can hide the public parameters, sorry, we can hide the secret matrix K in this proof, in this membership proof, in using a NBDH problem. So the question is that if we embed the secret key in this kind of ciphertext, then the verification equation of the designated verifier proof can be performed without the knowledge of K of the secret key but only we need the knowledge of M and this ciphertext. So the question is that it is not equivalent because the designated verifier proof is perfectly binding but in this case we only have computational binding. The key problem is that this equation is equivalent to this one and then finding a non-trivial solution of that equation that is really a bad solution because it doesn't imply the first protocol means finding a non-trivial vector in the kernel so it means that we are solving the kernel-difficult problem. Then moving to the hardness of these problems, we can study the generic hardness and we give the following results. So if the decisional problem is hard, the generic hard is what we call that the matrix distribution is hard, the matrix distribution hard means that the decisional problem is hard, then we have shown that the corresponding kernel problem is also generically hard. Also what we call algebraic reduction that means that if we start with a matrix distribution A, we can define another matrix distribution B just by multiplying by invertible matrices from the left and the right, these L and R matrices. And then this gives a natural reduction between kernel problems. So we can modify the matrix distribution just by multiplying from the left and from the right by random matrices. And also the main result is that we show that a sequence of matrix distributions with increasing size defines an increasing hardness family of kernel assumptions. Then we show that larger problems imply, I mean larger problems are harder than smaller problems and actually they are strictly harder. The first reduction results are quite straightforward because we give explicit reductions. The problem is that proving this strictly increasing hardness requires black box separations. Then you can see in this diagram what happened with the decisional problems in the upper part. For the computational problems we have the three results that the decisional problem imply the computational problems. The smallest problems are easier than the larger problems but they are strictly easier. Now let's focus on the red part. The problem of black box reduction between flexible problems is that a black box reduction must work for all possible oracles solving the problem P2. If we want to reduce P1 to the problem P2, the black box needs to work for all possible oracles solving P2. Then finding a separation result means that any reduction fails for some oracle solving P2. The problem is that if P2 is a flexible problem, the reduction has to be able to extract useful information for any possible solution of the flexible problem. This is something that is strange and then makes the proofs a bit harder. We also need to impose extra requirements to obtain meaningful results. We need to assume that the reduction only makes a constant number of queries to the P2 oracle. The main result is that using the generic multilinear group model, we can show that the black box reduction has this structure. We split the reduction into two parts. The first part corresponds to the first Q-1 queries and we separate the last query. The question is that this last block, the last block R1 that is the force processing stage can be modeled by this very simple equation where N is a linear map that only depends on the randomness of the reduction. It cannot depend on A, on the problem instance that the reduction is trying to solve. Also, the image of this linear map has a dimension that is strictly smaller than K because we are trying to reduce from a problem of size K to a problem of size K tilde that is strictly less than K. This is crucial and we also use a geometric property of this hard matrix distribution, that is what we call elusiveness. That means that if we start with this collection of vector spaces that define a matrix problem, then we say that it is elusive if there is no K-dimensional subspace that intersects non-negligibly the collection of subspaces. I mean, the subspaces belong to a family of subspaces and we pick one of these subspaces at random. This means that with these kinds of distributions, if you fix a K-dimensional subspace F, the other subspaces only have a non-trivial intersection with an eligible probability.  In this diagram, what we prove is that essentially the reduction doesn't need to compute V because U is an OTH. Actually, we prove that either U solves the original problem instance or the image of this W. But by the K-elusiveness, we can just say that this second case is not possible and then U needs to be a solution of the original problem. So if we can reduce one of the queries, we can use this argument iteratively and then show that the reduction should be able to solve the problem instance without any oracle query. That means that the problem was easy. So if we try to find a black box reduction between two hard problems, then this kind of reduction doesn't exist. Because if it existed, then the original problem was easy. This is the black box separation. Another result is that we always have a problem with the case L greater than K plus 1. I mean when the matrices in the matrix distribution are taller. So we have serious problems with the algebraic part, especially to prove the hardness even in the generic group model. But we managed to introduce a new family of assumptions in which we have the parameters when the matrix has the extra rows. So I mean we make a taller matrix, but we need these t-parameters. So we show that this family has optimal representation size. I mean this is a minimum number of parameters. We need at least t-parameters, which is the difference between the rows and the number of columns. And also we can show by hand that this defined generically secure MDDH problems. I mean this MDDH problem is hard in the K linear generic group model. So just commenting a bit about this contribution because it seems that if you can just take a matrix distribution and then apply the generic group model, the problem is that we are dealing with a family of problems, not a single problem. And then we needed to use more advanced tools to be able to prove this security result. Even we have to compute a groupler basis at hand and it's non-trivial. I mean we cannot expect to have other families that can be easily shown to be hard distributions. And that's all. Thank you. Thank you very much. Is there any questions for Jorge? I think time for one short question or so. So when the matrix is longer, you gave one example where you had t-parameters and all the values were equal. What is likely to happen in the other cases where you have more parameters? Do you have any examples where it is easy or you just don't know? Yeah, yeah. These are a natural, simple example that is all completely randomized in matrix. The problem is that it requires a lot of public information to store the matrix. So if you apply this kind of matrix distribution for a ketography protocol, perhaps you need to store this matrix as part of the public key. So instead of using k times k plus d group elements, we can use just d elements. So it's inconvenient. It's about shortness of the components. I understand it's inconvenient, but is it insecure if you have all the parameters? I mean the completely randomized matrix is more secure than the others. So you have to balance between security and compactness, but all are secure in the general group. Okay. Thank you very much. Please join me in thanking Jorge again.