Hello everyone. This is the Circuit Python Weekly meeting for October 1st, 2021. It's the time of the week where we get together to talk about all things Circuit Python. I'm Jeff, and I'm sponsored by Adafruit to work on Circuit Python. Circuit Python is a version of Python designed to run on tiny little computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit, so if you'd like to support them and Circuit Python, consider purchasing your hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join anytime by going to adafru.it-discord. We hold the meeting in the Circuit Python Dev text channel and the Circuit Python voice channel. This meeting typically happens on Mondays at 2 p.m. Eastern, 11 a.m. Pacific, except when it coincides with the U.S. holiday. Such as next week, we will recognize Indigenous Peoples' Day and move the meeting to Tuesday at the same time of day, so 24 hours later. The best way to be notified about changes to the meeting is subscribing to a calendar that is available on GitHub, and I believe the link is also in the meeting doc. This meeting is recorded. You record the audio from the voice channel and the video of the text channel. If you'd rather not have your voice recorded, you are still welcome to participate. This meeting will be posted on YouTube and the audio-only version will be released as a podcast. And Carter, I think we're getting a little feedback from you. So if we're not on your favorite podcast service, do let us know. There is a notes document to accompany the meeting and recording. If you're watching us on YouTube, the link is just down below. If you wish to participate but can't make it to the meeting, this is where you leave your hug reports and status updates in advance and we'll read them off during the meeting. I'll also be adding timestamps to the notes document, so if you're watching it after the fact, it will help you skip to the parts of the video that interest you the most. The meeting tends to run 60 to 90 minutes, so it's great to have the option to skip around. Before the meeting, we post the link to the next meeting notes document in the CircuitPython.dev channel on the Atiford Discord every week. The best way to find it is to check the pinned messages and follow the link to GitHub or to Google Docs. The structure of the meeting has five parts. Next up is community news where we get a preview of the Python on Microcontrollers newsletter, a sampling of things that are going on with CircuitPython and Python on hardware. The second part is the state of CircuitPython, the libraries, and Blinka, where we take a statistical overview of the entire project. The first participatory round robin is called hug reports, an opportunity to highlight the good things the folks around us are doing to make the time to recognize the awesome folks in our community. The second round robin is called status updates. We invite you to take a couple of minutes to talk about what you've done since you had time to join us in a meeting and what we'll be up to in the next week or until the next meeting you can join us. And then the last part is called in the weeds. If there is a need for a longer term discussion, this is where we are going to do it. Please add the topic to the notes document as you have identified it, whether that's a week in advance or during someone's status update, including your own. And that covers the major parts of the meeting. So I will click over to our notes document and tell you about a few headlines and a few projects from the CircuitPython newsletter coming out tomorrow. First off, and this reflects my priorities, I'm really excited that Hectoberfest begins October 1st. Hosted by Digital Ocean for the eighth year in a row, Hectoberfest encourages participation and giving back to the open source community by completing pull requests, participating in events, and donating to open source projects. Anyone around the globe who wants to help drive the growth of open source and make positive contributions to an ever growing community, all backgrounds and skill levels are encouraged to participate. The first 55,000 participants can earn a t-shirt and there are links to Digital Ocean and it is also via Twitter. So here in CircuitPython, I think we will hear more about this later, but we are actively participating in Hectoberfest. We have tagged a bunch of good first issues and we will be actively reviewing them, merging them and marking them as Hectoberfest accepted. So more about that later in the meeting. Next up, a lovely piece of hardware, the Blues Wireless Swan in the Feather Compatible Form Factor. And there are some links to Twitter and let's see. The highlights of this board are 120 megahertz STM32 microcontroller with two megs of flash and 640 kilobytes of RAM. A bunch of IO pins that you can use that are kind of in between the regular Feather pins. And yeah, other stuff. So next up, and I picked this one full disclosure because it's a project by a friend of mine. It's called OctoMatrix Portal. It lets you see the status of your OctoPrint 3D printer on an 80 Fruit Matrix Portal and that is of course programmed in CircuitPython. And last up, outside of the CircuitPython world, building a GPS data logger for an electric bike on MicroPython links to DesignPark and Twitter. The CircuitPython Weekly Newsletter has a lot more than this and it is a community-run newsletter emailed every Tuesday. The complete archives are on adafruitdaily.com category slash CircuitPython and we always seek to highlight the latest Python on hardware related news from around the web including CircuitPython, Python and MicroPython developments. We really want you to contribute your news or project and you can do it in a number of ways. You can edit next week's draft directly on GitHub and submit a pull request with the changes. You can tag a tweet with hashtag CircuitPython on Twitter or email cpnews at adafruit.com and as always a big hug report to Ann for doing the great work that she does to bring us this newsletter every week. Next section, the state of CircuitPython, the libraries and Blinka. The core of this section is statistics gathered from GitHub about our activity over the last seven days and we break it down into several subsections but I will start with the overall numbers.  We have Earth Prelude, M Lupo, Flantastic Dan, Pontus O, and FE7N who have recently been authors of merged pull requests so thank you very much to them if you're just first dipping your toes in and of course thank you to our regular contributors and people that we see all the time. Issues-wise we closed 18 issues and we had 298 issues opened by 13 people so that's obviously a big net increase in issues but it's all for a good reason. It doesn't indicate that we have huge problems. It indicates that we have huge opportunities and in particular a lot of Hectoberfest opportunities. And with that I will hand it off to Dan to tell us about what is up in the core. Thank you, Jeff. So I'm talking about the Circuit Python Core which is the Eight of Food Circuit Python repo. Last week we had seven pull requests that were merged. Five authors and four reviewers. Pontus O, as Jeff mentioned, is a new contributor of a pull request to the core. We closed six issues but we opened 13 new issues. That's fine, people are beginning to discover issues with the 7.0 release. We've assigned the Hectoberfest label to 23 issues so if you'd like to do some nice small self-contained project please take a look at those issues. We'd be grateful. There are 431 open issues right now.  There are 17 open for 7XX release. We'll probably do a 7.1 release in not too distant future, adding a few features and fixing some problems. I would say the number of issues is kind of stable. So take a look at those Hectoberfest issues and see if there's anything that strikes your fancy. Okay, thank you. Thank you, Dan. And next I'll hand the talking stick to Ketney to tell us about the libraries. Thanks, Jeff. So this applies to all of the Adafruit Circuit Python libraries which is everything that starts with Adafruit underscore CircuitPython underscore as well as the Adafruit Circuit Python bundle and the community bundle and I believe our cookie cutter wrap-o. So across all those libraries this week we had 11 pull requests merged from 7 different authors and 7 different reviewers leaving us with 57 open pull requests. We had 12 issues closed by 7 people and an exciting 282 opened by 2 people. And the lovely thing there is we assigned Hectoberfest label to 283 issues and I believe something like 280 of those are new. So early hug report to Formiguy for that I will be giving another hug report to Formiguy for that later. So that leaves us with 624 open issues and 285 good first issues. If you're looking to contribute to CircuitPython on the Python side of things check out circuitpython.org slash contributing. You'll find all of this information and more including a list of open pull requests, a list of open issues, and some library infrastructure issues. You can search the issues by label if you're new to all of this check out good first issue. We just created many of them and there's an explanation in those issues on how to complete them and we are absolutely available to help you with any questions you have along the way. There is a guide on contributing to CircuitPython using Git and GitHub that explains a pretty standard workflow for using both to contribute to open source and it's our standard workflow. So take a look at that if you're new and feel free to ping us with any questions and we are always available on Discord which you can join at adafru.it slash discord or if you reply to the GitHub issue we can also assist you there. In terms of library updates in the last seven days we had one new library, Adafruit CircuitPython Radial Controller and a few updated libraries that I will not read off. So overall we're heading into Hacktoberfest with a massive number of good first issues. This also means that there may be a number of folks looking for help with PRs and so on over the next four weeks. If you're a member of the review team please keep an eye out for these issues in PRs. If you are not a member of the review team and you'd like to help out, do the same and feel free to comment on either the issues or the PRs as folks are requesting assistance and that's where we are with the libraries. Thank you and to round out the section Melissa will tell us about Blinka. Hello, Blinka is our CircuitPython compatibility layer for MicroPython, RaspberryPy and other single board computers and this week we had one pull request merged by one author and one reviewer. There are four open pull requests. I think one of those is mine so I'm kind of waiting on somebody else to look at it. See there were zero open or zero closed issues by zero people and three opened by three people and there are zero issues with the Hacktoberfest label assigned and we currently have 65 open issues. There were 9904 pie wheels downloads in last month and we are currently supporting 76 boards and that's it. Thank you, Melissa. Next up, his hug reports. As I mentioned earlier, it is an opportunity for us to recognize the great stuff that the people around us are doing and an anecdote, pardon me, to the normal way of just talking about bug reports. So I will start it off and then we'll proceed in alphabetical order and when we come to you open up your mic and speak or if I need to read it out note that in the notes document. So I will start off with a group hug and a hug for all the community moderators who are dealing with a slow but steady stream of spammers. It's real easy to delete the message and ban the person who posted it but we don't like that people have to see that stuff and so thanks for everyone who steps up and deals with it promptly when it happens. And a hug to all those who are about to join us at the Hacktoberfest to make CircuitPython and the libraries better. And finally, a hug in anticipation of Dan doing some of the Discord meetings which we were discussing earlier. And with that, I will pass it to Katny. All right, so first up I have another hug for Foamy Guy for creating basically all of our good first issues. Getting that set up was something that I put out a call for leading into Hacktoberfest because we always have folks who want to participate but we don't always have the opportunity to provide things that new folks can participate with. So Foamy Guy came up with a particular thing that a lot of the libraries need that will make things easier to work with the libraries in different IDEs and so on. It's something we've wanted to do for a while and put together a very specific explanation on how to do it in each issue and was able to file all those issues and get that going. So we are prepared. So thank you very much for that. Thank you to Maker Melissa for helping me out with some guide feedback. Thank you to Dan for looking into an issue filed on the Fritzing repo about a pin name and suggesting the issue authors submit a PR with the fix to that end. A hug report to O&H 0000 on GitHub for submitting a PR to the Adafruit Fritzing library repo to fix a pin name on the feather RP2040 Fritzing object. And finally a hug report to Crayola for all the effort put in to make the IS31FL3741 work with the LED animation library. That's what I got. Thanks. Next up is Melissa and then we'll head to the top of the alphabet. I just want to give a group hug to everyone. All right. Thank you. I have some hug reports from Anecdata who has a hug for Dan and me for help with keypad usage and also with design concepts in the core for buffering data. And a hug to Micodev1 for collaborating on shared bindings and development work on the monitor mode API. And then I have notes from Charles Burnford who is lurking but sends a group hug. And next up is Dan. Okay. Thanks to CPT Iglo. Maybe that's Captain Iglo. I'm not sure. A Discord user who was trying out the KittyPaw keypad project and found several problems. First I rewrote it to use keypad which helps some things but it turns out there's some display IO delays that we'll need to check into. And speaking of running meetings thanks to Katni for writing up. A really wonderful guide about how to run the Monday meeting which we use internally and I'll rely on that extensively when I start to run meetings. Okay. All right. And last up is FOMI Guy. All right. Thanks, Jeff. This week hugs are going out for Deshipu who shared a simplified wiring diagram with me over the weekend or I think this was Friday evening to wire up the Max 7219 and an 8x8 matrix as well as several other folks who tuned into the stream on Friday and helped me figure out how to map the pins on that matrix. It turned out I had kind of an odd one. And then also to Carter who made a new graphic that's real nice and labels all the pins that we found for that matrix. So I appreciate help from everyone. Thanks. All right. And that rounds out hug reports. We had next two status updates where we want to hear about what you've been up to, what you hope to do, a little about any trouble that you're facing and then of course little humorous anecdotes or something that you're doing outside of circuit Python is always welcome. I will lead off once again. Last week I wrote and we published on the learn system a BLE thermal printer guide so you can print out bitmap images using a board like the Adafruit clue with a specific BLE thermal printer that is styled to look like it has a cat face on it which is the main reason I did the project. And then on Thursday and Friday I started on a new library to support the OV 5640 camera module that's still a work in progress but hopefully this week when I continue working on it I will get it to the point where it is going with circuit Python and with the cat printer I plan to continue on with a text-label printing program but that is for me that's not on Adafruit time so it is not likely to become a guide. It might appear on my my blog, you never know. Anyway, and if anybody is interested in trying out this particular camera module I put a link to an Amazon listing and the best board to use it with is the Espressif Kaluga Dev Kit because it has a compatible connector built right in and you can also run it with an example from Espressif rather than with circuit Python so you can verify that it is working. Anyway, that is what I will be up to and alphabetically next is Catney. Alright, so I have an exceedingly short list this week the things I was doing were a bit involved. So I published the proximity trinky guide that's the last I believe of our trinky family it's got a sensor, the APDS 9960 I think on it which is a proximity color gesture and light sensor I believe it does proximity best so we did there's a couple examples in there that use that including one to play the chrome dino game which if you've ever used chrome when you don't have network connectivity you'll be aware of this but if you've always had network connectivity you may not be aware of it it's basically a side scroller where you hit the space bar to jump over obstacles and you're a dinosaur completely random but we put that together and I was actually able to play it relatively well with the trinky so it's usable anyway I finished the ANO rotary encoder guide and that's now awaiting moderation and that's a large clicky directional navigation rotary encoder with five buttons that we made a breakout for and there's a fairly simple example that shows a LED on a neopixel ring do things based on the encoder buttons and encoder itself so that should be out soon I just keep an eye out for that so if you picked one up that'll be in there and that'll have all the information about the breakout and so on as well so this week I'm working on the LED glasses guide with philby and that'll get started this week and then once that's done I'll be doing the guide for the new AT Tiny breakout which is in the shop coming soon and it will be coming soon and then any various miscellaneous things that come up and that's what I've got going on alright just a few items but there's a lot behind it all and next up maker Melissa alright let's see here I lost my place in the document ah ok let's see last week I finished up my rotary animated gift player guide and I got back into the javascript stuff and I've been making good progress in updating the javascript BLE file transfer library and this week I'm going to work on finishing updating that library and then I'll implement some file related features into the circuit python code editor and that's it alright thank you and at the top of the alphabet we have Dan ok last week toward the end of last week I wrote a guide about building custom hid devices in circuit python it has two examples one is Jeff's enki rollover example which we're just moving from the previous customizing USB devices guide and the other is a new page I wrote about trying to emulate partially the Microsoft service style which is what is called a radio controller that's what Microsoft calls it and there's an introductory matter there too so that guide is published it doesn't give you all the gory details how to write USB report descriptors is very complicated and it's far larger than we can cover in a guide now I'm working on boot keyboard support that's sort of like half done that means that you'll be able to use circuit python boards to talk to things like bios that don't have regular keyboard support as I mentioned there's a problem with the iPad with the KittyKeyPaw which the problem is that display.io is doing a lot of work in the background and it causes USB messages to be delayed and in particular if there's a key down message it might be like half a second before the key up message goes through and that means that the operating system helpfully starts doing auto repeat which is pretty bad just trying to type a key once so when Scott returns I will talk to him about that and we're getting reports of bugs to fix for 7xx and I'm triaging those and making sure that we do take a look at the ones that look like we need to fix them okay thank you Dan and once again rounding out the section is foamy guy alright last week I got an 8x8 LED matrix wired up the first of our typing information PRs on the max 7219 driver I started working on proof of concept for kind of like a way to split out display setup from the rest of scripts the rest of an example script for instance because I noticed on linux display.io it's kind of tough to share code around between folks who have different displays because you end up having to cut chunks out and replace it with your own setup so I'm trying to make that as smooth as I can and I finally got around this weekend to publishing a short video that shows folks how to use the circuit python stubs with PyCharm and some of the kind of high level benefits that you get from it so I can point folks to that that's a question that's come up a few times lately on the discord this week I need to solder up a pico to test the same max 7219 driver with an issue that somebody brought into the help with channel last night it's not related to the PR but they were having some trouble getting that ship to work with a pico so I plan to try that out I am going to try to make some display IO examples for sensors one of the things we've had a couple of folks asked for in the chat is how to display the output from a sensor on the screen and then just update it every time they check a new value on the sensor and it occurred to me that lots of the simple test scripts in the driver libraries they will just print to the repel so I think it'd be good if we had a couple that will display onto a screen so I'm going to try to do that and then the last thing I have is a try to make an introduction to display IO we have a great guide but some folks just do better with like a video tutorial or something like that so I'll try to make a video that covers the basic building blocks and how to put them together to achieve what you want with display IO and that's what I got on the docket this week thanks alright that finishes status updates so we will now go out in the weeds and as I mentioned before this is a time for longer discussion that doesn't fit within the other categories and I've got some topics here and I will go ahead and hand it to Guy and Annick Data for the first topic alright yeah this was something that we that came up over the over the weekend and it led to the same discussion about having display based examples but really I think this is more a more general problem or a more general discussion so in libraries we always have an examples directory with one or more examples of the code and we got to talking about like where would be the best place to hold a similar type of thing but for core code there is some of that floating around in various different places but I think it would be great if we had one spot with a bunch of examples together so some ideas that came to mind for me were making an examples directory in the core repo the same way we do in the libraries or making a separate repo that is like dedicated just to built in module examples but I'm interested in feedback from mothers and any other ideas that folks have so I go ahead Dan go ahead I was going to say I think that where we have the most is in the learn system so the Adafruit Learning Guides repo and just to put my own question or discussion on top of this I was thinking in the circuit python documentation should we be linking more to like here is the main guide about bus IO if there is a bus IO guide within the circuit python read the docs but that's a tier about it and it's just it's a lot of work okay so it hasn't been happening we've discussed it though I if we don't want to add a directory to the core I think a new core examples repo would be a better option than learn because they won't necessarily be a learn guide about each thing well that and the level of CI necessary to handle code going into the learn repo is pretty astronomical and if it's definitely not going into a learn guide I don't think it's worth running all of that every time so I think its own repo makes sense and then the nice thing about that would be that I think we could probably work it into or maybe I don't really know how the examples bundle works but if we can get it pulled into the examples bundle that would be also convenient but it would allow for like sub directories and you know so on and so forth without without it being diluted into a huge repo like the learn repo yeah I do think some organization maybe based like organized by the module that the examples are for would be good yeah and that's kind of what I'm thinking which I feel like if we tried to do that inside of the learn repo we would just lose things a reason not to do it in the core is hardly anybody clones the core and I think the way most people get examples is like Katnie was saying through the examples zip file that you use to learn so something that can work with the examples that would be an ideal outcome okay I think a new repo probably makes the most sense okay cool yeah hello go ahead Charles I found the see python you know python.org has an example collection where you can go out and grab just the code you need or to try out a new function that you're learning about so and that is in fact done in a separate repo from their main thing because otherwise it would I would probably do this I think they have the same problem you would with circuit python you'd make it you'd make a huge increase in work the workload to maintain it okay cool so there's precedent out there could you paste the link to that could you paste the link to that I'll try to find it again I had it for a while and then I lost it because I lost my old computer so I'm sort of re-accumulating all these things okay thank you yeah thanks Charles alright anything more to say about that um no I think we have enough to get started I'll I'll reply back to Kat and hear in the chat but I think we got enough to get going alright well next up I had a section on Hechtoberfest and I guess I want to insert first will somebody go check whether the Hechtoberfest labels are actually placed like we thought they were or whether Adobot just counted up how many she would like to add um someone asked about it in the chat and I earlier had looked and I thought the labels maybe weren't there so if somebody could take a look and verify and find out whether we need to try Adobot again we need to try Adobot again you weren't there two minutes ago okay anyway um I just wanted to talk about my understanding of how to handle port requests so that the submitters get the credit toward their t-shirt or tree and of course the canonical instructions are on hechtoberfest.digitalocean.com there's a page of resources for maintainers and this is my understanding and summary of the document so if you can promptly merge a PR or give it an accepted review you can do that and that's enough if not but clearly you are looking at a well intentioned PR that may need some work you can give them credit by adding the label hechtoberfest accepted on the pull request and also of course let the author know what work is needed before we can get it merged if you have some a PR that is clearly not well intentioned you can tag it as invalid or spam and of course close it up and then if those labels that you need are not available you can contact someone with extra github powers that would be me Katny, Dan, Scott probably some others and I think a mention on the issue may be best, you could also do it on discord and probably most of the repos have that already the other thing I noticed is that this year for the first time you can get your hechtoberfest points by doing maintainer actions such as writing reviews and merging PRs so that is exciting if you do more work on the review side and you aren't an official reviewer yet that becomes a great reason to get spun up right now so that you can earn a hechtoberfest reward and finally I wondered whether we wanted to add hechtoberfest as a topic to any or all of our repos it doesn't seem to be required but one way you can discover where to do hechtoberfest work is to search github by topic and this would allow us to appear there so that is the only thing that is a question and of course any corrections that I outlined above are also welcome I think I mean there is probably a way through the API to label them all using adabot or some such yeah I don't think we would want to do it manually no let's get the labels fixed yes and then we will worry about possibly adding the topic that is my thought yeah and Ketny will you are you going to look into the the tag issue yes okay and you will ping whoever you need if adabot needs modified or something yes okay thank you for that yep alright so Jay first scene says should a topic be added to adafruit blinka I mean it could be and maybe we will do something wholesale or maybe we won't it sounds like probably we won't do something wholesale right now um and if adafruit blinka doesn't have the tag tags go on issues and topics go on repos it's nomenclature to learn and it sounded like melissa didn't know whether there were any good first issues or good hechtoberfest issues in blinka there are not that may be a reason not to market as part of the topic well for blinka it's like I don't know what qualifies as a good hechtoberfest issue you know I mean shouldn't any issues qualify yeah what the label does it's a signal to maybe a more beginner person whether an issue should be tackled ah but because what you actually get counted for doing is filing a port request it doesn't actually matter that isn't a requirement for somebody to be able to get the credit it just is a signal you should look at this and so that's I think why we equate it with good first issue yeah I think there's not much low hanging fruit on blinka at the moment I don't necessarily think that's true oh yeah about it being a good first issue we did that like that was an internal choice we made there are plenty of folks who are far more advanced who will be participating in hechtoberfest so just don't add the good first issue label along with the hechtoberfest label and I think it's still an appropriate situation so what about creating a just a topic over the whole blinka topic for the whole repo that would be fine that would also be fine I just think don't feel like you have to have low hanging fruit to guide people to take a look at your issues is my point sounds good okay that is going to wrap up the circuit python weekly meeting for october 4 2021 a big thanks to everybody who joined us today and if you're listening in or watching after the fact we are happy to have you and we invite you to stop by our discord at adafru.it slash discord you can talk 24 hours a day ask questions in the help with circuit python channel work with us to improve circuit python the libraries in blinka and circuit python dev or try out one of our other channels we've got help with projects and 3d printing and live broadcasting and all sorts of stuff the next meeting is delayed by 24 hours in honor of indigenous peoples day so we will see you again on just checking the date october 12th 2021 at the usual time and let's see there's a little more that I need to say before closing out the meeting if you want to support adafruit and circuit python and those of us that work on circuit python consider purchasing from the adafruit shop at adafruit.com the video of the meeting will be released on youtube at youtube.com and the podcast will be available on major podcast services it is featured in the python for microcontrollers newsletter the community run newsletter that you can contribute to visit adafruitdaily.com to subscribe to be notified about the meeting and any changes to the time or day which I already covered next week's change please ask to be added to the circuit pythonista's role on discord this will also enable you to speak during the meeting if you want to and at any rate we all hope to see you next week and thanks to everybody who joined us today


Okay, hello everybody. Good afternoon. My name is Hans-Jürgen Schoenig. Just call me Hans. It's easier, maybe Yeah, I'm over there from Europe. You've might heard of the country of Austria maybe once in a while Which is roughly here So I'm glad to got the invitation to come here to the conference to talk to you about some small amounts of data And how to scale I would say post-course up a little bit So I'm delighted that the room is somewhat full. Is everybody somewhat comfortable with my accent or Okay, okay guys, so this is about one billion rows per second and The second slide is a bit boring it says it's reaching a milestone.  I was attending a GPU conference in Amsterdam and Every minute somebody was walking by and asked the question. Can you scale? And at some point you start to be angry, right? Because every every time you get this bloody question Can you scale right? What do you say? Yes? No, maybe don't care go away. No so I looked up some stuff on the internet and I Stepped over some oracle paper where oracle announced and break billion rows per second So as I told you it was a bit personal from this point on so we decided to What can we do actually to do the same thing in post-course, right? So what does it take? To process a billion lines per second in post-course. I mean if you can do one billion lines You can do five billion lines. You can do ten billion lines. You can do a hundred million lines, right? So the question is really What can be scaled? How can it be done? How do you do that? And what's the current state of the project in order to achieve that? So First question for the audience who is more than a billion rows? Okay, how much more give me a number? five ten Trillions, okay, that's that's nice. We only know that from government debt home in Austria. So trillions usually Okay, so As I said the goal is processing a billion rows and see what's the path to get there silence the discussion about hopefully about scalability at least to some extent and Basically the second the next important thing is to figure out where are the limitations in post-course? so where do we need to improve where do we need to do things better and Secondly, how can it be done without any commercial tools without any data warehouse without any hyper fancy Whatever stuff so use as much vanilla Postgres as you can and see how far you get, right? So word of caution I gave this talk two weeks ago in in Moscow and Somebody approached me, but it doesn't work very query. Of course it doesn't This is a if you have this amount of data Doing everything is Not what you're aiming for right? You're trying to solve the problem you got But given a certain amount of data everything is sometimes harder than it sounds, right? So if somebody promises that oh, we can do everything at this speed that's most likely a lie or Marketing guy or something like that. Okay, which could be equivalent. I don't know Okay, so As I said, it's a path to enlightenment if you know what enlightenment is Okay, so as you might know many years ago back in the old days. That's where I come from We used to have one core For for each query, which means that if you have a large amount of data and if you do this with one CPU core You're always somewhat limited because the the ability to build ever faster a single core Systems is basically I wouldn't say gone But it starts to be harder and harder to get stuff out of a single core so obviously what you want is you want to use many cores and Starting with postgres 96. We've got the ability to use a parallel query and as you might expect we're gonna use that Okay, so that's the the basic idea Basically, that's not the first time in in postgres history that somebody tried to do a lot of data Traditionally back here. I think it was 12 for 13 years something like that a brilliant guy from Skype Had the idea to use to build a thing called appeal proxy Which is a ingenious concept because the idea is to have a stored procedure language whose only purpose is to scale We're gonna call a function. It does all the nasty stuff. It dispatches Spreads the query all out in your cluster and it's wonderful for all the beef stuff at least back in the old days But the problem is you have to do everything yourself So the question is if you have 50 servers, you have to do anything yourself. You don't want that So the question is really how can we do that you issue a query you get an answer? No strings attached. Okay, so that's that's the whole plan for that Any questions regarding scope, etc? So, uh, by the way, there are some seats over here in case you want to be more convenient. Okay, okay? So 1 billion rows We've decided on a fairly complicated table consisting of three columns only and This is gonna be the data How to approach that basically if they keep one thing in mind It makes no difference if you have three columns 50 columns 500 columns. I mean if you have more columns, it's gonna be slower, right? How do you counter slowness? Well, you add more capacity. Okay, so if People criticize the fact that my my table is reasonably simple The only reason was to do it that in such a simple way is that we didn't want to render out so many machines Okay, that's the only reason but imagine you had the same thing with 50 columns Okay, so for the general strategy of what to do in order to get there It makes no difference if there are three columns or nine columns, right? So it's basically Technology-wise. It's the same thing. It's just boiled down to a minimum example in order to see where we can get here The query we tried to do of course we did some more queries, but you will see along the way All the implications we got here in order to to make it work. So very simple query. We have a couple of groups we count it and Then there's a demo table and So one counter per group. So simple analysis That's basically I mean that's a pretty common thing actually have a reasonably large size You could calculate count average for a couple of groups You could add a couple of filters. You could do all these kinds of stuff, right? So that's a fairly common type of query I would I would suggest But again as a word of caution It's the most simplistic the most simplistic example I could think of to get there in reality You're gonna have broader tables.  You're gonna have some some other data types Etc that it makes no difference that the point is if this makes a difference Then something is wrong by definition anyway Okay So before we start scaling out we get to see How much can we actually get out of a single server? Because if we know how far we can get on a single server It's gonna show us the path of how much hardware we are supposed to throw with the problem In order to to reach this kind of goal, right? So single server performance how far can we get with a single server? How far can we get with a single machine and How far can we get there? So as you know or as you might know or as I hope you to know In postgres parallel queries were added in 9.6. Of course, it's not feature complete nothing is ever feature complete so features are added as we speak and For the test as I said, it's basically postgres 9.6 with some extensions. I'm gonna talk about them couple of minutes so One thing when you're using parallel queries in postgres is that if you fire a query the system is gonna Determine the number of CPU cores It's gonna use and the reason is quite simple if you have 30 cores if you're alone You might want to use them But if there are more people working on the system, you don't want one guy to take all the resources So obviously we have to plan for for more people on the same system Which makes somewhat sense and that's pretty much exactly what it did not want.  So I wanted to have all the resources, right? So Postgres basically determines the number of CPU cores it uses for a scan By using this variable called Mean parallel query a relation size and by default it's eight megabytes It means that if you have a four megabyte or a three megabyte table Postgres is never gonna go go for a parallel query because it's not worth setting up infrastructure It's just not worth doing that. So if your data is small postgres is not gonna go for a for a parallel query What happens instead is if the size of a table Triples it will get one more worker Okay, so if your table is nine times larger, you will get two more worker processes Okay, so there's basically a formula here which says okay take this value and if you multiply it by three You will get one more worker Unfortunately, I did my test with three billion rows and you cannot set this value large enough to get all the CPUs to work right so fortunately You can overrule the thing so you could say all the table on Did email set parallel workers to 32 so you can explicitly tell the system Okay, if you're doing a large scan on this table use all the hard way you got Okay, so I'm throwing everything at processing a single table because if I keep using this standard setting I tried it with I think a hundred kilobytes and it never gave me more than 13 cores or so because if You do the math you cannot set it low enough in order to use 500 CPU cores or so so Basically, you have to cheat a bit and tell the system. Okay guys. We are alone. Let's use all the hardware. It's party time We really want to cook the main board, right? So that's what we did. So basically putting it all together the question is we did the whole test in memory and That comes for a very single simple reason because you wanted to figure out how postgres scales and not how your storage systems scales Okay, if you got a single SSD, it's gonna give you let's say 400 megabytes a second And guess how far you get with 400 megabytes a second on my private box at home In some cases, it's not even enough to fill a single CPU core okay, so Intense CPUs or power 8 or whatever you got is so powerful that you really get into trouble with such simple queries to fit the thing Okay, so of course you can add more servers. You can stick 50 SSDs into your disk into into your box But at some point if you want to know how postgres scale Scales for the sake of simplicity. We did it in memory and that's not necessarily realistic but The only thing it does if you do it in memory is that you need fewer boxes Because otherwise what you do is you just keep adding servers. So what's the point? I mean once you're linear once you're linear You don't care if it's 10 or 12 servers. The question is can you be linear up to a certain number of servers? So that's the real question. Okay, so don't be shocked if everything here is in memory because you will would see exactly the same behavior With simply more disks or something like that So we did not want it to be a Disk benchmark for this and this is what's gonna happen on a single server Okay, so we rented out some the largest box we could get on Google For the staggering price of 28 euros for the whole test Okay, so it's a highly expensive. It's a Roughly a speeding ticket at home Yeah, I know that they paid some of them In Germany they have those wonderful white, you know round signs on the highway. It means do what you want That's freedom German car good thing to have seen some on the road So basically if we start off with with with with one CPU here We are somewhere down here and as we keep adding worker processes, right? so up to here we added 16 worker processes and The important observation here really is that's a line a linear thing Okay, so if if there is no a limitation Let's suppose. It's only memory What postgres actually gives you is a linear line for a sequential scan group by things like that If you add more course Okay, if you have to add more workers, that's highly important because if the line would go like this Then it would have a hard time if the table gets larger or something like that So you don't want that so you really really want to be linear here and what you see here everything above 16 if you add workers, this is Intel hyper threading Okay, so the Google rents out a 32 core box in reality. It's 32 threads 16 cores took me two hours to figure out Okay, so everything you see up from this point is that you see that this I would call it cheaters at the right English word It's gonna it's gonna it's gonna increase and that's the impact of hyper threading okay, so That could be you see the variations go up. So but basically linear to hardware capacity that that's that's the main observation and what you see here is that we we top out somewhere in the area of 30 something million okay, 35 40 depends on on how lucky you are But that's roughly something you can get out of a machine on on Google. By the way as you might have noticed before What they did was at its count data and not count star There's a semantic difference and also a performance difference if you put in star it will see a couple of million more Okay So there is a difference here between count star and count data But basically what it does is it shifts the curve up by a couple of million so we don't care Okay, the reason is I was too lazy to write the aggregate we need here It's the only reason why why this is consta not consta but basically this is hyper threading which is somewhat interesting So we see here that we are at 40 something million. So if we do the math We can go for 30 servers and see how what happens here so as I said 16 core books and Everything provided for the staggering amount of 28 euros and 14 cents from Google Compute Engine and Yeah So of course we want to have more than one note Okay, so having one computer is somewhat boring even your neighbor has that you want to be better than your neighbor, of course so What we did was we placed in order to stay in memory and all those kind of nasty stuff What we did here is we put a hundred million lines on each chart Okay, so generating a hundred million lines and Putting it all on a chart, which basically means that you stay in memory okay, so a line of this size is something like 30 bytes or so 35 whatever and Basically here it fits nicely on one chart.  Okay So everywhere maximum workers, which means 32 servers 16 courage leaves you with roughly 500 cores And that's basically what it takes in a virtual environment to do that I'm gonna I'm gonna elaborate on the number of cores a bit later again Okay, so this is what it looks like of course you have a server and this is where your query ends up and What it do here is you create a table and what we decided on the easiest way to do that in 9.6 It's basically to have a partition table, but every partition is a foreign data wrapper to the other both Okay, so here got an empty table With 32 partitions and each petition is a foreign table Okay, so if you have a single table on this on the server you shard it As much as you want and then on all the on all the notes You have some different all the data we got here, but here it looks like one table and it's partitioned So if you carry that suppose we have two nodes only in our system, which is of course not sufficient what we got here is we scan every table and For every table we want that the aggregation is gonna happen on the other side The key here is that if you start sending data around Don't even get started Okay, if you want to send 3 billion rows over the network don't get started right no way to do that in three seconds I mean no way meaning no useful way Okay, I mean if you are some large company Sending gigabytes of data with a network is okay, but this is a single database Installation so you certainly don't want to exchange data because you can afford it because you need all the time in order to compute something You cannot send it over so the key here is really to push this aggregation over So the count is gonna happen on the other side 32 times Okay, and at the end of the day it has to be added up And here is the first crucial thing. How do you make the thing push over the aggregate? that's not so trivial actually and Then you just add up the numbers, but then you get I went for 10 groups. So 30 times 10 groups so the final stage here is something like 300 rows So it's not even worth thinking about that. So the real party really starts if you manage to push over the aggregate and that's not trivial, okay, that's not trivial Okay, as long as the partial results are comparatively small This is gonna be somewhat linear Okay, so if we do that on the million groups, so if you got a million groups here a Situation is gonna change because you have to fetch all those intermediate results and process them, right? So you can really only guarantee linear scalability if the intermediate results are somewhat small Okay, haven't missed anybody so far is and is everybody sufficiently lightened or did I lose anybody already? Anybody asleep? No It's a neighbor's leave. No Everybody looks fine. Okay, so So we scale up to billion rows So of course it takes a bit and the first thing you have to keep in mind is that if you use a foreign data wrapper the bloody thing well the wonderful thing Uses a cursor behind the scenes it has to Because it has to assume that if you're if this is a database link and if I juggle fetch over all the data You have to assume that it's a lot of data. So it uses a cursor And the trouble is it's not so much an issue for for this kind of query But it's an issue for different queries that if you do that In postgres, there's a thing called cursor tuple fraction which tells the optimizer don't optimize for the whole result Optimize for the first 10% Okay, so it do declare cursor for select star and it doesn't optimize for the whole thing It optimizes for the first 10% assuming that you're not going to read the rest And that's a bit of a problem because it changes the plan Okay, it changes the plan which is not an issue in this case, but it has some impact on how things work Okay, so easy part tell the thing do it all at once just to be sure all the plans are fine No bad assumptions get it all at once down the interact.  So that's the first thing that some would easy because it's there Next on the list We have to make all those people work at the same time So we cannot say okay you do a hundred million lines and we wait for you then comes the next guy Let's wait for him then comes the next guy we wait for you We don't want that because then we would be sequential and there is no point in charting and aggregate if you do all the Stuff in a sequential way. There's really no point. So what you want here is if we go back to the query all those parts here have to work concurrently and At this point Postgres 96 cannot do that because it simply has not been implemented for that's the point. So fortunately, there is a bit of traffic on postgres mailing list and There are patches around to make this happen for for future versions of postgres and we did that so we took the stuff and patched it in and Everything is fine and then you need a second thing you need a synchronous fetching. So you want parallel append So all the data is fetched add it up So this has to be in parallel and secondly you want a synchronous fetching So send off the query send off the query send off the query send off the query and then a synchronously consumed data as it comes in Okay, so that's something you need Of course, this will be in some future version of postgres But that's key. You have to make things work in parallel So 9.6 cannot do this test out of the box. It needs a bit of patching to get it done. So to put everything in there and That's fine. So for future of postgres. This looks very bright because Most of the stuff is basically on the way postgres then Comes something really nasty Normally so in postgres versions you are using so it's a two-class society. I got better version of you So Normally what you do is that aggregations Happened before joins and append and all this kind of stuff because usually if you take an old traditional plan There is no aggregate down here. It's up there All right, so this is gonna fetch the data Aggregate it and the key to success is really to get this aggregate down here into the other side and That is nasty That is really really nasty that needs some patching which we did Actually, there are two patches out there I think one was published by EDP and the other one by my fellow colleague Tony Huska So we basically had to spend some time on on patching the optimizer, which is a really really nasty part here That's not trivial to get it done To actually do the aggregation before you add it up again So if this append node in between that's Joe is already looking scared He knows the implications, right? Okay, okay, so this is not trivial to do that But as I said it was for American conference and we are people from Europe So we wanted to show that we have technology over there Okay, so that's also that's key that that's really key because in order to make aggregates Shard all over the place you have to make the aggregations on the other side and if something like that It doesn't mean that our patch has to make it into core if any patch providing this functionality makes it into core This is gonna be the real key milestone in order to have insanely distributed computation Okay, because everybody does its work. You add up the answers. Everybody is fine Some people call it map reduce style aggregation if you want to use that term for whatever reason So that's important. I can't stress it enough So of course if you do something like an average or if you do some more complicated thing I mean if you do an average locally You add up the numbers you count the stuff and at the end of the of the day you divide, right? So final function is gonna divide you can't do that anymore because if 32 nodes are gonna send you an average You cannot average the average It's not correct, right? It's not gonna give you the same answer It's gonna give you roughly the same answer, but roughly the same answer is only okay in politics, right? So we are in database business. We're insanely conservative people at least on the data side and Of course, they're for therefore, sorry bad English. I got this horrible Schwarzenegger accent, isn't it? I'll be back or the query is terminated Have you seen that they come from the same area Schwarzenegger? Would you have guessed? No? Yeah, have you heard about it? It's not Australia no kangaroos, but you can eat kangaroos we've tried that it's So over there Easy extension you put in some extension to have those partial results coming over so I cheated a bit what you've seen here is Not the standard postgres count It's my count, but don't worry. It's no fake news. It's real data So it's really gonna work. Okay, so bottom line Dissect the aggregation send the parallel stuff execute on the stuff add on the main node be happy That's the whole thing. So here it is For 28 euros and 14 cents. So two coffees at the airport Here's the query and what you see is It's roughly 3.2 billion lines. So each chart is 300 something million and here we are in 2.9 seconds Okay, do the tune of 16 times 32 32 times 16 cores Which is something? Which can be improved on which is basically the next topic any questions so far? Yes, sir The foreign data read by infrastructure can we used the postgres FTW here and Applied the patch for that so that you can push down aggregates Okay, there is a patch which was committed already in 10 zero in order the interface could already do that before But the specific part to talk postgres to postgres needed to push down the aggregates Okay, so we also added this part in case I forgot to mention you could do similar things with oracle and Don't know by heart if oracle can already push down aggregates into the foreign data rapper. Do you happen to know Joe? Yeah, me too. So we have downed my friends with doubts So But I know the guy who is also sitting in Vienna by the way He has a lot of time to work on foreign data rapper for postgres because it's working for city government bureaucrats basically so But he's very good guy You will love him. He's so great He grabbed the code for the compiler. Yeah could happen. Yeah. Oh, well, you can basically overrule You can decrease this this value this mean relation whatever size for this particular table So you could do all the table on that so that's one way to do it and Secondly fix it in core That's the only strategy. I'm aware of but basically you could you could just configure it for this table as you know What's gonna happen? No Excel uses a different strategy here. We really tried to go as vanilla as we could To use a stand a much standard postgres as possible. No external stuff. No magic whatever So I really want to give you an outlook what should be possible with standard postgres without using a code fork Without using a commercial product without doing anything. So the the point is really for me So I hope it I got it across To really do as much as standard postgres as possible to see what are the missing parts to do things like that done Of course, there are solutions out there green plum which does it stuff Excel which does it stuff some other stuff Which does it stuff? So I was short on names. I couldn't remember anything else. I just say this was Okay, so everybody's doing his own stuff here, but this is really astound to postgres core is would potentially get Okay So as I said 28 euros 14 cents You were really worth it. Thank you Raj Uh, yeah, as I said a lot more parallelism in postgres 10 There was a blog post out the other week by robot house And it had so many items on it that I can barely remember What it all was there was so much work going into postgres parallelism for for 10 and beyond So this has got to be a I would say game changer in this field But let's do a word of caution. What you've seen is this a trivial query your counting numbers. That's not too hard Let's try the same with roll up group grouping sets windowing functions Things like that within group order, etc game over Okay game over that's simple Roll up If you have roll up means male female total right it gives you this This summary line. So all the states all of us, right? That's roll up It requires sorting Try to sort something across 32 shards without moving data around I would say not in three seconds Okay, there is Something on the way I think to to make this work with with hashing as the normal query But basically what I was trying what I'm trying to say is that It's not going to work for an arbitrary query Okay, so it's wonderful for min max things like that. That's easy But if you go for a median for instance, that's not so trivial anymore. It's uh It's a bit. It's a bit. It's a bit nasty or if you go for windowing functions over order by partition Okay, things starts to be fishy So there's a long long way to go in order to have a larger subset of sql working on this amount of data Okay, so as I said Try to get there See see how far we are from a practical use case typical data crunching Average count sum whatever Okay, and let's see what's needed to go from there But I wanted to say is if anybody has the impression that hey cool We're just free patches away from scaling anything to a billion rows Okay, that's not the case That's not the case. So this is something which is partly Theoretically not possible and partly it's it's going to be a couple of years in the future Okay, so this has to be straight that this has to be stressed. Okay, so that really this this point comes over Okay, how how things are gonna speed up? I've seen on the to-do list of the russians That uh, I think they're free What what a funny about russia Uh, that uh, three teams, I think one in, uh, germany out of germany Yeah, nobody out of germany Yeah, west from russia. Yeah, yeah, west from russia. Yeah, west of berlin Um I had relatives in germany makes wife was german and always told them we should build a wall build behind you not in front of you Never got through So, uh, just in time compilation. So I think there are three teams out there who are working on different approaches for just in time compilation There is one team in russia. If I got the name is Is something russian team. There's also somebody South south west of germany who is doing different approaches. So what you're gonna see here is for this kind of query Uh, there is a lot of potential in postgres to do this with fewer than 500 cores Okay, so if this is really nicely, uh cheat compiled, etc We might be able to do it in 100 cores, right? So which means not ferdy machines, but six, okay Assuming that with enough memory. Okay, so this is gonna really really gonna rock big time once we got it in Um in order to speed up this kind of analytics Okay, so that's really really important stuff going on The second thing here is which could be possible I was short of some some other word here deeper execution Short of english that was the main issue here um At this point there was one note The handsome aggregation that's it right but for some calculations you might Go deeper you might have a tree something's gonna happen here Something is going to happen on the next stage something's going to happen on the next stage So did it basically funnel the whole thing into a A system across multiple uh servers, okay If you do some trickery with views and things like that it would basically already be possible with what we got here We did some experiments for some gearbox detection error detection stuff It's basically already possible to have Nodes feeding into nodes so have some sort of pipeline out of service. So that's something which certainly gonna be Interesting to uh to examine in the future And then of course there's this huge thing called column store Right the point here is that currently postgres stores rose Okay, and if you want to have the fifth column you have to go through it and fetch it And maybe you don't even need the first three, okay So for many of this kind of workloads for time series, etc It's a lot easier to store things as columns because there's usually a lot more redundancy in a column than you have in the line Right, so if you have time The next line might be two seconds ahead and the next one is three seconds and two seconds, etc So you might only be want to store the deltas and not the whole thing So there's a lot more redundancy in a column usually than you got in the line Okay, and if you only need three columns out of 50 right column store is is Is a big deal for this kind of workloads So it's also going to reduce cpu consumption dramatically in the future as soon as somebody figures out how to implement it the best way Yeah There is a lot of stuff out there is contrip extension, but it doesn't work with parallel query There are forks, etc. There is a lot of stuff So but the aim is clear. It's I think here everybody is is Sufficiently aware of the notion that this is going to boost analytics because that's that's what it does vectorization, etc Okay, so any questions regarding the whole thing? Yes, sir Yeah, if you can show me the query, I can tell you Add if a sub select in the count Why do you want to do that? Oh Why not I can tell you a couple of reasons because maybe you don't want to do it for every row Maybe there is a better way to formulate that Okay, uh more questions Yes, sir. Well, there are two ways to approach the problem Let let me start with the inconvenient answer first If you are in warehousing Analyzing historic data There's not gonna be coming sales data or temperature from yesterday So one approach is I mean, I'm not I'm not saying that I'm for that. I'm just saying that That's a philosophy which exists Put it that way So in this case, you might not even care that this is the case that you don't see the same snapshot on all the the service At this point given this approach, there is no guarantee There is a guarantee that you have 32 or 33 separate transactions going on and mvcc or whatever ensures That every chart in itself is consistent But there is no such thing as a global snapshot because they are all in different transaction ideas They're all doing different. Basically what you do is it's just like googling three websites They have nothing to do each other, but you got the feeling that the data is accurate Okay, there is no global transaction manager involved here And that's a major difference to some other approaches That's so there's no thing but again when postgres opens the You plan the stuff you're in a certain In a certain transactional view and then basically all those snapshots get opened pretty much at the same time So it's not guaranteed to be precise, but it's for analytical stuff in many cases good enough. I would say Okay, so next one Uh postgres default is always raw It's always wrong. It was no didn't say that There is a c-store extension for for postgres, but it's uh, we haven't done it with parallel grids Okay Go any more questions Okay, so thank you very much for your attention I hope you liked it like us on facebook follow us on twitter tell all your friends about us and uh, I'll be back


Respected Prime Minister, your commitment to inclusion, captured in the mantra of Sapkasat, Sapkavikas, Sapkavishwas, is the heartbeat of a nation on an unstoppable march towards progress. India is also using its military power for the greater good. There is now greater capability within the Indian Navy to execute complex anti-piracy operations. This reflects India's stronger commitment to ensure the safety of commercial shipping and freedom of navigation through vital waterways so critical in our world today. India's digital infrastructure has undergone a remarkable transformation. With over 880 million internet subscribers, India ranks second globally just behind China. Leveraging this connectivity, India has pioneered a digital public infrastructure model admired by other nations. In a mere eight years, made in India's UPI has evolved from a promising initiative to a universal tool reshaping the transaction landscape. From the simplest roadside purchase to the complexities of IPO stock acquisitions, and now even to purchase a ticket to the Eiffel Tower, UPI has become a tool that other world readers have experienced, only to wonder why they did not think of it first. When it comes to the economy, India has been a major player on the global stage. India is projected to chip in a hefty 16% to the world's growth as per the IMF report. Indian economy has been growing at a fast pace and is now the world's fourth largest equity market. It is in the second position in global retail index and has the world's third largest startup ecosystem. And guess what? Wall Street investors are taking notice too. Billions of dollars are shifting from other developed countries to India, with foreign institutional investors betting big on India's future. India is set to grow by over 7% in the current fiscal and become the world's third largest economy with a GDP of $5 trillion in the next three years. What's been the secret? Well, since 2014, the country has been strengthening its economic fundamentals in a big way. Take merchandise exports. For example, they hit a record high at around $450 billion in FY23. Sure, there are challenges ahead, like geopolitical tensions and the global demand slowdown. But India has shown resilience like no other. The last 10 years has been transformative for India, with its economy for undergoing significant structural reforms, boosting its macroeconomic foundations. As we embark on Amritkaal, I want us all to envision a futuristic, inclusive and prosperous society rooted in a human-centric approach. This will be our India. The next two decades belong to India, where initiatives like Make in India, Create in India, Serve from India, and Startup India converge into a majestic narrative, transforming the nation into knowledge, innovation, and a manufacturing hub. This vision aligns perfectly with the theme of this year's E.T. Now Global Business Summit. Vision, Development, Diversification – an intricate tale echoing your vision to craft India as the Vishwa Guru. During this time of change, there is no better guide than you, Prime Minister, to set the course. Your address tonight is not just an inspirational speech. It is a compass that will guide us through the uncharted waters of global shifts and will galvanize us in staying the path and achieving the dream of a $30 trillion economy. Distinguished guests, with immense pride, I present to you the Honourable Prime Minister of India, Shree Narendra Modiji. And before we call him up on stage, we'd like you to welcome the Prime Minister with a presentation of a shawl. This time, the theme of the Summit itself is very important – disruption, development, or diversification. This is India's time – this is India's time – and the whole of Vishwa, India, is growing rapidly. We have just met the people of this kind in Davos. There is something else in liquid. The gaga is burning there. In Davos, India also saw the rise of Abhutpurva. Someone said that India is an abhutpurva economic success story. The one that was mentioned in Davos was the leader of the world. Someone said that India's digital and physical infrastructure is at a new level. One point was that there is no such place in the world where India should not be suppressed. A big producer has raised the issue of India. Today, in every development expert group of the world, India has been transformed for the last 10 years. Many things were mentioned in Venice. These things show that there is so much trust in India today. There was never such a positive sentiment in the world before. Maybe someone has experienced such a positive sentiment in the world. That is why I have said it with red and yellow. This is the right time. Friends, in any country's development journey, there comes a time when all situations are in its favour. India makes itself strong for the coming centuries. I am looking at the same time for India today. When I talk about the millennium, I talk about a very sensible future. It is good that no one has ever heard of the millennium. If you have not heard of the millennium, then it takes a lot of years. But there are some people who are able to see it. This time period, this Kaalkhan, is truly a spiritual era. In a way, the virtuous cycle has begun. This is the time when our growth rate is increasing and our fiscal deficit is decreasing. This is the time when our export is increasing and the current account deficit is decreasing. This is the time when our productive investment is at a high level. This is the time when opportunities and income are increasing. And poverty is decreasing. This is the time when the consumption and corporate profitability are increasing. And the bank has less NPA records. This is the time when the production and productivity are increasing. And this is the time when our losses are always low. Friends, this time our last budget has also received a lot of praise from experts and our friends on the media. Many analysts have also said that this is not a world-famous budget. This is also the reason for my praise. I thank them for their support. But I also want to add some other things to their minds. I want to focus on some important things. If you will discuss our budget or overall policy-making, you will see some first principles in it. And those first principles are stability, consistency, and continuity. This budget is also the extension of it. Friends, when someone is being tested, it can be tested during a difficult or difficult time. There was a big test for the government in the whole world. No one had any idea how to deal with health and economic challenges. During this time, India had the most important thing to remember. They would come to the TV station and meet with the country. And at the time of that crisis, in front of the citizens of the country, every moment was standing still.  And I said, if I have life, then I have the world. Now you will remember. We put the entire force on people to save their lives. The government released the ration for the poor. We focused on the Med-in-India vaccine. We also heard that this vaccine reached India as soon as possible. As soon as this science caught its breath, we said, there is life and there is the world. We also addressed the health and economic challenges. The government sent money directly to the women's banks. We helped the women's banks. We took all the measures to prevent any problems in farming. We took the risk of changing the economy. With the help of the media, we can take out the newspapers at that time. At that time, there were many experts saying, print the money, print the notes, so that the demand increases and help the big business. I can understand the industrial house if I print the notes. They will print them today. But the Nobel Prize winners also said the same to me. It was going on for two months. Many of the governments of the world had accepted this path. But nothing has happened from this step. But we were able to control the economy as per our wish. And the price was still not able to control the price. The side-effects of the path they chose are still there. We also had a lot of efforts to print the notes.  The world is saying, the world is doing. But we knew the real world. We understood it. We felt that based on our wish, we had made no decision. And the result of which, which the world is doing today, which the world is proud of. The questions that were raised on our policies were proved by our policies. And today, because of this, India is in such a strong situation. Friends, we are in a welfare state.  The quality of life for it is our prayer. We have not thought about it. We have made it. But we have also heard that we should be able to achieve this goal by every step of the way. We have not only invested in the future of the country, but also invested in the future of the country. If you pay attention, you will see four prominent factors in our budget. First, as a capital expenditure, record productive cash. Second, on the welfare scheme, unprecedented new age. Third, wasteful expenditure per control. And fourth, financial discipline. You must have seen these four factors in these four issues. We have settled them. And in these four issues, we have achieved the goal. Today, some people ask us how did we do this? I can answer many of its questions. And one of them is money-saving, money-earning. As we completed the project quickly, we saved a lot of money for the country. It is our responsibility to complete the project in a timely manner. I will give you an example. The Eastern Dedicated Fate was started in 2008. If the previous government had worked fast, it would have cost 16500 crores. But it was completed last year. By the time it was completed, it would have cost more than Rs. 50,000 crores. Similarly, you also know Assam's Boghi Bridge. It was started in 1998. And it cost Rs. 1,100 crores. I will tell you what happened. We came later and we made it in a timely manner. The issue was going on since 1998. We completed it in 2018. Still, the issue of Rs. 1,100 crores has reached Rs. 5,000 crores. I can't count the number of projects like this. Earlier, the money that was being destroyed, whose money was it? It was not coming from any politician's pocket. It was from the country. It was the money of the taxpayers of the country. It was the money of you people. We respected taxpayers' money. We put all our efforts to complete the project in a timely manner. Look at this. Look at the progress of the new generation. It has taken so much speed. It has been developed. It has been established in Mumbai. We have seen the progress of its development. That is why today, the country is saying that it does the right thing and it does the right thing. Along with that, our government is doing it in a timely manner. It is using technology to save the country's money. Now, we can imagine that when we were in Congress, in the papers, will you be surprised to hear this? In the papers, there were 10 crores of names that were being used, the ones that had not been born. In the papers, there were 10 crores of names that were being used, the ones that had not been born. In the papers, there were 10 crores of names that were being used. In the papers, there were 10 crores of names that were being used, the ones that had not been born. There were such types of names that were not even born. We removed 10 crores of names from the papers. We started a direct benefit transfer scheme. We stopped the leakage of the money. We stopped the leakage of the money. We stopped the leakage of the money. Even in 1999, there was nothing the same. Even in 1999, there was nothing the same. There was nothing the same. There was nothing the same. So, in 1999 with that, we removed all the names that were being used. We removed all the names that were being used. The governor started a business venture We have saved time from that. The quality has improved. Many people have become suppliers. And in that, the government has saved around 65,000 crore rupees. We have saved 65,000 crore rupees. We have diversified the oil procurement. And because of that, 25,000 crore rupees have been saved. You are also getting its benefits. You are not getting it. In the last one year, only in petrol, we have done ethanol blending and saved 24,000 crore rupees. And not only that, some people joke about the cleanliness of the environment. The Prime Minister of the country keeps talking about cleanliness. Under the cleanliness of the environment, we have earned 11,000 crore rupees by selling the wood in the government buildings. And we have also made our plans to save the money of the citizens of the country. Today, because of the water life mission, it is possible to get clean water to the poor. Because of this, their expenses have been reduced. Aishman Bharat has saved 1,000,000 crore rupees from the expenses of the country. And it has increased. 80% discount on PM Janavsati Kendra. And there is a power of discount in our country. No matter how good the store, no matter how good the goods are, the next 10% discount will be given to all the women there. With the 80% discount, we give medicines to the middle and poor families of the country. Janavsati Kendra. And the people who have bought medicines from there, they have saved 30,000 crore rupees. Friends, I am with the present generation. When you answer many of the future generations, I just don't want to live a life of a daily life. I want to save the future of the future generations. Friends, I am away from the politics of getting more than 4 votes empty-handed. And that is why we have given the best results to all the politicians in the elections. I will give you a small example. Do you know the approach of some parties with electricity? That approach will take the electricity of the country to the destruction. My way is different from theirs. You know that our government has brought a rooftop solar scheme for 1 crore households. With this scheme, people will be able to generate electricity and sell more electricity and earn money. We have used the cheap LED bulb. Our previous government used to get LED bulbs for 400 rupees. When we came here, we started getting them for 40-50 rupees. And the quality is the same, the company is the same. Because of the LED bulb, there are nearly 20,000 crore rupees left in the electricity bill. Friends, you all are sitting here in a very large room and you know that 7-10 years ago, we were given a day and a night to remove poverty. There was no poverty among these people. But at that time, the government made an industry that suggested removing poverty. They used to earn from it. They used to get out of consultancy. People in this industry used to tell new and new formulas to remove poverty. And they used to become crore households themselves. But the country could not reduce poverty. For years, sitting in these rooms, there was a debate on removing poverty with wine and cheese. And poverty was being made. But after 2014, when the son of poverty was elected, the industry was shut down in the name of poverty. I came here from poverty, so I know how to fight poverty. Our government started a war against poverty. Every country started a war. So the result came out that in the last 10 years, 25 crore people have come out of poverty. It shows that our government's policies are right. Our government's policy is right. In this direction, we will reduce the poverty of the country and make our country a better place. Friends, our governance model is moving forward in two directions. On the one hand, we are addressing the elections of the 20th century which we have experienced in the past. And on the other hand, we are lying to fulfill the aspirations of the 21st century. We do not accept any work as small. On the other hand, we are fighting with great challenges. We have achieved great goals. If our government has made 11 crore investments, then space sector has also made new opportunities. If our government has given 4 crore to the poor, then it has made more than 10,000 total tinkering labs. If our government has made more than 300 medical colleges, then the work of the freight corridor and the defence corridor is also going very fast. If our government has run many trains, then it has run almost 10,000 electric buses in many cities of the country. If our government has connected crores of Indians with banking, then it has also made the capital of Switzerland from Fintech, from Digital India.  How do you make a target for your culture? What is the change of success for you? Many people will say that wherever you were last year, you make your target from there. If you were 10 years ago, then you will go to 12, 13, 15. If you have a growth of 5-10%, then it is considered good. I will say that this is the curse of incremental thinking. This is why it is wrong. Because you are bound by yourself in the circle. I remember that when I came to the government, then our poor people were stuck in the same thought. I decided that if I take out the poor people from this thought, then the country will be able to get out of that thought. I took out the poor people from the previous government at a very high speed. I decided to work on a large scale. Today, the world is seeing its results. There are several sectors in which 10 years have passed and 7 years have not passed in the last 70 years. 7 years and 10 years have passed. In 2014, in 7 decades, there was an electrification of about 20,000 km of railway lines. In 7 decades, 20,000 km. In 10 years of our government, more than 40,000 km of railway lines have been electrified. I am not talking about months. In 2014, in 7 decades, there was an electrification of about 18,000 km of railway lines. 18,000 km. In 10 years of our government, 30,000 km of railway lines have been electrified. In 70 years, 18,000 km. In 10 years, 30,000 km. If I had worked with incremental thought, then where would I have reached? In India, in 7 decades, there were less than 250 km of railway lines. In the last 10 years, we have made more than 650 km of railway lines. In 2014, in 7 decades, in India, there were 3.5 crore families and 3.5 crore water connections. In 2019, we started the water life vision. In the last 5 years, in the rural areas, we have made more than 10 crore water connections. In the last 10 years of 2014, the country's policies were actually taking the country on the path of Kangali. In the 60th century of the society, we have also kept a white paper regarding the Arthitian situation of India. Today, it is also being watched. And today, when I have such a big audience, I will also tell you about my mind. The white paper that I have brought, I could have brought it in 2014.  But in 2014, the things that we brought in front of me, I was shocked. The Arthitian situation was very serious. With the coup and the policy and the paralyses, there was a lot of debate in the world. If I had opened up these things, if I had a new wrong signal, then I would have lost the faith of the country. People would have lost their faith. For example, if you have a serious illness, then half of the country would have ended there. That was the state of the country. Politically, I used to wear that suit. I used to bring out all those things. Politically, they tell me to do that. But the political party doesn't let me do that. That's why I left the political party. I chose the political party. And in the last 10 years, when all the conditions have been strengthened, when all the attacks have become our strength, then I thought that I should tell the truth in front of the country. I should keep things open. That's why I presented the white paper in the parliament yesterday. If you see it, you will find out where I was. And how many bad situations we have come across today. When you are seeing the new rise of India today, our government has done a lot of things. And I was just seeing that the third economy of the other country was saying the same thing again and again. And no one has any doubts about it. I was just seeing, as Mr. Vinit Ji speaks with a lot of humility, he is very soft-spoken. But still, you all trust me. Yes, we will reach the third level. Why? I was sitting next to you. And I guarantee you that in our third level, the country will reach the third level in the world. And friends, keep this also ready. I don't hide anything. I also give the opportunity to prepare everyone. People keep saying that they are politicians. But now I have the experience. I don't speak like this. And as far as I know, in the third level, there is going to be a big decision. To remove the poverty of India, to give the development of India a new life, we have prepared new ideas. I have been doing this for the last one and a half years. And I have been working very closely on how I will work and where I will take it. I have been making it in the entire roadmap. And I have taken advice from more than 15 lakh people, in a different way. I have been working on it with more than 15 lakh people. I have never given any pressure. The work is going on. In the coming 20-30 days, India will take the final route. New India will work with super speed. And this is the guarantee of Modi. I hope that in this context, there will be discussions on employment. There will be many good suggestions. I will be working on the road. Once again, for this occasion, I have a lot of good news. Thank you very much. Prime Minister, you have no other competition. And I am not talking about May. I am talking about February. The way you have shown, ladies and gentlemen, the way of saving is shown, but there is no need for saving in the tally of the tally. I think we can give...