Welcome to another quarantine Davis talk today. We have CK tan who's the co-founder of the tease data CK has been involved in databases for a long time. He's worked on some very very You know influential and seminal systems in addition to green plum When he was a master student at the University of Wisconsin Madison working with David Dwayne. He also worked on shore The sort of early old to be storage manager It sort of predates a lot of existing systems around today, but had a lot of modern Modern database technology in an academic project, which was a big deal. He also worked on Exodus again under under wit So the tease data has been around for several years now And I first became aware of the tease when they gave a talk to PG company is 2014 that sort of laid out the column store the LVM stuff that they were doing on top of Postgres and To me this is really you know hit a hit a sweet spot for me because this is all the things I wouldn't do in the system. We were building so I'm You know, it sucks that it takes it takes a quarantine a pandemic to finally get CK to come give a talk at CMU But so we're super happy that that he's here So then we'll do the same rules that we normally do if you have a question just unmute yourself Say who you are Where are you coming from and then ask questions? So just interrupt him it as we go along. Okay? All right, CK go for it. Thanks Andy for those kind words So, yeah, so I'm the founder of BTS data. We started in 2014. It's another co-founder Feng Tian we were both early engineers at Grim Plum We built up that product and then and then we left and in 2014 We read this really influential people by paper by Neumann and we essentially redid the whole thing in Postgres and You know Q1 was like eight times faster. So we felt we had to start a company and and that's what that's what we did So eventually At the late at later time Grim Plum when pop went open source so we moved the whole source code to Grim Plum and Started this deep green DB product Commercially we can talk about that, you know, if you guys are interested later, but let's focus on the technical part here Okay, so Much time We'll go to like 530 ish like you want to put a present mode or you just go like this. Let's go to present Okay All right, here we go. Yeah, so here's the talk outline We'll talk about what is deep green DB and GP DB and then and then we'll talk about, you know the performance characteristics of deep green DB We're going to some source code and show you guys how ugly it can look And you know, maybe it maybe it's it's easy enough to read And then there's some experiences that we picked up after running the company that I think may be Very different from what students things, you know, especially in terms of transaction stuff But we're good get into that later. Okay, so let's go So deep green DB is Built on top of Green Plum open source Green Plum database We want to from the schedule we want to maintain Compatibility at the bite level this because we think this is how you get customers, right? it is hundred percent compatible at the bite level and Even with the binaries you don't even need to change your program So what you do if you are a customer you could take our binary shut down Green Plum Swap in deep green DB and start it up and all your program should still work and you know, you would just notice the Speed up of some queries. Okay, so you don't have to move the data You don't have to do any code changes to your SQL programs P SQL still connects your ODBC JDBC, whatever still function the same Okay So we address if inefficiencies in Green Plum in in in their computation in the network layer and some connectivity stuff So compute, you know, essentially LLVM Code Gen in LLVM addresses that network is it's kind of a You know for for database engineers Engineers network is is very different We'll talk about that too and how Green Plum implemented and how it was not too good. Do you mean by never to mean between nodes not necessarily between the client? Yeah, between notes it the interconnect the interconnect. Okay. Yeah, so you need it, you know very fast and and very optimized for for big box sending of data And then in terms of connectivity to S3 to all these other places that people really really need now You know to Kafka to S3 But you don't hear about how to anymore, which is a good thing And I'll do a quick demo now and just to show you guys how it does See it would be this guy Okay, let me see so So you just you know, this is just PSQL connect to a database and then it just looks like this Let's see. So we do that show you the line item table, right?  All that everything the same. Yeah, everything This is and then when you use the physical plan it like it branches between the teas and yeah, let's talk about that later Yeah, so Let's see. So we do Q1 I made a view out of it. So this is essentially TPCH Q1 I just do a select star from Q1. This is without BTS Without the co-gen. This is a very boring demo Time for coffee Doesn't have to it's about a few seconds more. There you go. 25 seconds set the test People this is about five seconds. Yeah So, so that's the difference about five times on Q1 Okay, I think we should be okay. No, let's go back to this guy We can come back to the demo if we have time later and do more So this is the architecture of green pump and and dig green So what you have is some Distributed MPP with shed nothing architecture. We have the master hose here and then you know, all these are the slaves or and This each box here is a machine, right? So on each on the master machine, you can you have one primary postgres instance and then on the segment hose you can have half primary segments and half mirror segments and So this this primary segment may mirror This secondary segment. Can you see the arrow? It's a bit small. Yeah. Yes. Yeah. So, you know, like like this Striping backups pairing So so so the master gets the SQL and and make up the plan and then it distribute the plan to all the holes to to work Okay, and the standby master standby hose is just there in case the master is down And so then the piece equal then connect to the standby via some DNS magic or you know, depending on on on the customer and how they do it it may be maybe Manual maybe by DNS Okay, so that's So this is a in each segment hose we put in additional components. So this is a blow-up picture of the segment hose So in addition to postgres instances For primary and mirror segments. We have something called x drive. It's a component that we put in for connectivity So these primary segments will connect to x drive, which will then connect to you know, S3 S3 pool or all these FPGA cards Okay, and the thing to take away is it is stateless. So, you know, there's no concept of transaction But you can connect to it and get data So this might be getting to the weeds of postgres, but like are these foreign data wrappers or what does this look like? We have foreign data wrappers Adapters that would connect to it. It's just a network connection, but the network connection here is That the protocol is is is how they put it is it's it's built for transporting data Right, so it's not just it's not built for very chatty stuff. It's for building to send big chunk of stuff and The the stuff that goes between the primary segments and the x drive. They're all column columns you know factors of columns okay, okay, and you know the S3 pool will is Essentially a local disk cache. So if you give if we can avoid going to hit AWS if we find it in the local cache I think you can find More talk about this in in snowflake and they do something like this, too Right, so going to S3 all the time is very expensive But if you have a local cache it's faster and and it's also less expensive So when you say stateless again, so like it's like the query shows up If you're touching the foreign data wrapper table, then the query plan gets shoved down to the segments. Yeah, and then Yeah, so here in the segment It would just be a connection to x drive and say, you know, give me this file give me the list of files and then we will hash them and Select those that map to this primary this segment and then we just do a scan on on those files But what if like if it's if it's just hey, give me this file What is the FPGA actually doing that right because it's if you wanted to say Do this predicate, right? No, this is a general x drive is a general Interface so there are it it supports all this other external data. So, you know, you could do what what it so the What it does is allows you to mount a logical disk Okay, so one of the disk may be your S3 Pull the other disk may be your local files Right. It's a mount. So you you in the config file you specify, you know Amount by this name. Yeah, it's connecting to S3 or it's connecting to Kafka or it's connecting to S3 pull and you know, you can write You can write tokens that that would get called based on those mount points But are you doing predicate pushdown when you would want to use the FPGA? Yeah, so there's something called Fung wrote something that would that would have a Simple executor like syntax, okay that you can push push things down into the FPGA You know, essentially we're just scanning files here. So, you know, it's filters and it can do some x if you if you have You know bigger FPGA cards So a little bit more about interconnect. So interconnect is really really crucial You know in a small setup, you probably won't see it but When you when you scale big then it becomes a bigger and bigger problem every day So remember postgres is a it's not threaded, right? So Each process needs its own connections tcp connections everywhere Right. So if you have something like this, you know 10 machines with eight segments per machine and you know Your query has three three joins and each join has distributions Under them motions or exchanges under them Then, you know, you need to make a lot of connections per postgres executable Right. So each of them may be connecting to if you if you just multiply it It's like 2000 connections per machine per query. If you have 10 queries, you know, it's 20 000 connections per machine per query and eventually that becomes TCP would not be able to handle And so eventually green palm switched to tcp But then, you know, we are Database engineers, right? So we don't really write very good network codes The implementation in in green thumb has a network window of one Right, and then it times out and then it resets If it doesn't get the act within one second and when you have a lot of Some not even under not even a lot if when you have some packet loss, you could have Huge delay in your query And that happens just when the system is busiest, right? And that's it's not very very good Um, and also in in green plums interconnect the data flows only one way There's no, uh, the protocol doesn't allow for you to send any kind of hints Uh, we'll see it's it's quite a big big improvement here from the receiver to the sender So, you know, in when you're building a hash table Once you have the left side when once you have built up the hash table You can essentially compute a a bloom filter and send it to all the scans and say, you know Don't send me these tuples that will never join, right? And that that has a huge effect on some of the queries Just because you avoid a lot of the network so So you're saying here with That like with this is like the way green plum currently works. Yep That you can't do these things and then the next slide because this is how you made it better Yeah, we did we that's all this stuff right And so we have something called deep mesh uh an interconnect That we that uh, Xiao Yan who is an ex Cisco engineers built for us So here we have tcp connections between hosts. So between hosts, there's there's just tcp connection So in the case Previous case you have 10 machines. You have, you know, 100 connections in total between the between the machines, right and inside the hosts everything is unix domain And and then we built we also so that's, you know, that's really pretty good in in reducing all these collisions and And packet loss tcp does does a does a good job And then between deep mesh the agent and the segments we have unix domain, which is pretty fast too. So that's that's how we address it Okay Okay, so here's a performance numbers on tpch um We just did this on some machines on on in alibaba Here is a speedup compared to open source green thumb 12 billion rows line type line item table We have, you know one one primary one one mass primary machine and four segment hosts and each host runs 12 12 segments I mean meaning 12 postgres instances right And it's stored in in column store with lz4 compression And runs on deep mesh and the this this speed is six gigabyte per second And you know and network is it's a bit slower there compared to aws um So on average we are about three times faster and you can see from this table here Um, you know q1 just the one that we did just now is five times because you know That's the very little network traffic there So we can we really see the speed up compared to just you know what I did on my local disc here there um So I want to highlight q1 q5 and q17 in in this talk um I think they they show most of the Improvements that that we see green plum by default. Is it a comms for a row store? It supports everything. Okay. Yeah So this is vetease column store compared to green plum column store No, the only thing we add there is lz4 compression. Got it. Okay. Okay. Yeah They don't have that any questions on the performance number. So nothing that jumps up I It's not it's not not surprising right like Yeah, some of those the small improvements some of those small improvements Are on queries that runs really fast So if the query run really fast then your compilation price is um, it's a much bigger percentage of that Of the whole speed up. So so you see one point something when when the query is really really really fast Is this using the like the orca, um Optimizer, okay I mean let's talk about that but like in general. Do you see customers using orca or is it always is using?  So how do we code gen right? so um Yeah, so we wanted to maintain 100 compatibility. So if you build a database from the grounds up There's no way you can build everything in day one so what we wanted to do is we would Use the regular green plum or postgres code as backup So what happens is if you submit a query Uh, it goes to the postgres SQL processor. It generates the ast tree It it will you know optimize it And then it gives you the plan tree right and you feed the plan tree to vitas jit And then we determine if we want to jit it or not or we if we can jit it or not, right if there are some Our constructs that we don't support then or you know, if the query Runs really fast and you know jitting would not be economical then we just kick it to the postgres site It it will just run the normal path And if we if we determine that we want to jit it and we can jit it then we you know run our executable Which is essentially just you know a call to a function now Since you have already jit the the new function What does your jit look like are you are you generating the ir directly or you have like an intermediate dsl? ir direct Okay. Yeah, so the code the code is coming Okay It's coming Yeah, so so so during this step in the middle here the vitas jit step This is what we do, right? So we have some quick heuristics to determine if If you know, it's just an index scan on a primary key on on a filter Then we just kick back to the to the old to the regular Executor because code gen could take 50 to hundreds of millisecond If you run a single single row select on a p3 primary index It's going to be less than You know one millisecond so it doesn't Yeah, jitting will will absolutely kill it right And then we convert this the postgres plan tree into the vitas plan tree in c++ Okay, so, you know if there are any plan notes Yeah, that we don't yet. We haven't yet coded then we just back out then give it to postgres again Okay, so so some plan notes like I don't know some more exotic ones that we don't we don't have it yet We would just give it to back to postgres Um, so then we call, you know, uh the code gen on the vitas plan tree and essentially the design is is what was outlined in the new One paper you have producer and you have consumer and they they generates and push the tuple up, right and Yeah, the scan node so on so if you if you know in postgres The tuples are all serialized and the code to To extract attributes out of the tuple It's a general purpose code and if you profile if you profile profile the Postgres code you'll see it shows up Very often very high in in in in the in the cost tree Um, in our case the scan node will actually generate a customized record serializer for those tables you know if you are And you know because we know exactly Uh, which attribute Is at which position There's no more decision the decisions were all made during code gen and at runtime you would just be Um going directly to those bytes and retrieve them and store them in in registers Um, I have a note here that says except really white table, right really white table and It's it's problematic because when we load into lrvm we load into lrvm registers And if you have a thousand attributes a thousand integers, I'm going to need a thousand registers Right a thousand you don't find a thousand registers in in Anywhere in the world, right? So so those get Actually gets backed into storage and then you'll see that performance degrade And there is some again some heuristics that we determine At which point that we don't generate the custom serializer and we back out to use the The postgres serializer the serializer Okay, and then when we generate the code There are nested plans are also also supported so Essentially there is a new when there's a new context that's created for each level and If you have a nested plan you just create a new context and then you ask that context to To jet code gen and things will be separate So one thing to note about c and c++ here is we ran into some trouble at first Just because Some programmers prefer to to write c++ code, but postgres is all in c so in in postgres Especially during error handling They have a when they do set jump and long jump, right? So if you if you call into c and they do a set jump before they do all this work And then you call into c++ And if you encounter an error if you call the postgres eloc Which is an error reporting Function it will do a long jump back To the to the point where it does the the set jump If you so in between those when it does a long jump back you lost all the Stack on c++ right so c++ would not be able to roll back and free up memory So you would have memory leaks all over the place Uh, and you don't see it unless you run into trouble So it's very important to to keep the two things separate So the for uh, we're actually hitting We actually hit the exception problems with lvm yesterday or today i mean fix it all all the arcades and people's thoughts so I feared your pain The the nested query plan part like this would be like a sub plan In the query plan tree you basically say you just say all right, it's a whole new plan You don't try to inline anything you just compile it separately. Yeah separately. It's a function call Okay Yeah, c++ is getting scary I Actually, nothing matters. Like are you I mean you started writing this in 2014. So it's presumably c++ 11 Yeah, okay Yeah, um, but we stick to very minimal c++. We started writing c++ in short right before it was just a Templatizer now Now it's it's it's pretty scary. I you know, I I got scared looking at those codes Um, yeah, so here's some some code gen stuff. So, you know in in in uh, Um postgres you see all this uh in for plus and this is Yeah inflow in you know plus minus multiply division right of abstract data types here Here's our code to generate them and this these are all generated So this is uh, you see the 32 and 32 32 and 16 So this is in four two plus is adding four byte integer with two bytes integers Right and all calls this function to generate the LLBM code And then this is this is that worker function um So the first line, you know, it just normalized the arguments and then we get the type um And then depending on the bit width we do we limit the bit width to 16 32 and 64 right, and then we ignore the Ignore the division and mod here first. Let's look at the add additions, right? So additions we just call jit as at overflow right the two with the two parameters And then we retrieve the value and the overflow bit And we generate code to to check the overflow bit and also to check if the error is not is now if the If the return value is now So we always do the addition no matter whether it's now or not Okay, since it's fast enough An additional check in front of it doesn't really really help. I mean you check it all the time So so that's how the code looks like How do you how do you do bog this? um You don't you look at the results All right, so like if there's a mistake and then you you know, you segfault inside inside of the jit code There's no stack trace. Oh inside the jit code. Yeah um Well, eventually you get good at it. It doesn't doesn't happen.  I don't have you You generate intermediate code and then compile it. Yeah, we we we now do it. Let's see what does uh It's still a huge difference. So I worked on postgres 11 after they added jit and and um Before they they did the jit. They have the same thing. They they generate the Some code some some intermediate code postgres specific intermediate code And when they do that and I try to convert that from into What we have and it's a bit slower because their model Doesn't let them use registers, right? So so in which case they they're always reading and writing into memory Each step is is reading and writing into memory and so The way my student my pg student perchance here If you can tell a little about it the way we get by with that is um We instead of jitting everything you do have some pre-compile primitives Sort of like vector-wise and those things are super optimized to take advantage of simby so you You avoid some of that jitting of everything like the entire query plan You guys are doing what the hyper guy did in In germany, okay Okay. Yeah, it ticks. Yeah, but I would say we Part of the reason uh prashant did this change away from what you did is It's for engineering purposes that like I I have a rotating cast of students Not very few of them can actually work on this kind of code Yeah, well we we This is just you know that the arithmetic part, right? We even have the whole hash table written in Of course. Yeah And and you know and the and the overflow mechanism in it as well Hey, so this is this is prashant So there were there were a couple of reasons why we went away from doing this type of direct ir cogen one of them was because it's very difficult to debug And uh, another reason was also because compilation times can be quite significant. So small running Um, you may generate a lot of code and that kind of negates the benefit of cogenic So in the new model We always generate we always generate code. Um, but we don't generate I love my are we generate a higher level higher that's efficient to to generate and also efficient to execute and um Over the course of time. We'll we'll eventually to compile that using lvm. So we have this tiered approach We so we get the benefits of compilation and the benefits of debugability because we have an intermediate representation so you can step into g into gdb and Um, I think we have essentially the same thing but not not here But in the fpga stuff that I talked about just now and those are those have a a higher level instructions and one additional thing that uh I was pretty mentioned is because he has this interpreter of the op codes before you get into the the compile lvm stuff is um If you can actually start running the query Uh using the op codes and then when the compilation is done you slide that in Like the hyper guys have a paper on this last year. Yeah. Yeah I think it's crazy. But does it work? It works. Yes. Well, I mean we don't have it in the full system. Yeah, but it works in brashant's experiments You can slide it in. Okay. Yes, because it's because it's just a function call, right? A function call Okay It's a bit different. Well, our function call essentially is the whole query. No, but like like it would be You're reading blocks of data. So so here's the function call for a given block You call that function and so is that is that invocation of the interpreter or the compile code? I see. Oh, so for each block you can restart. Yes Interesting. Okay Okay, there's Your thing makes money. I just doesn't Yeah, um, so here's a little bit of q1, uh, kochen that we talk about just now. Um In green plum, right?   Um, so each segment will send four throws to the master and then the master will Act so that's why we see, you know, there's not much network traffic And but there's still network So speed up on pg, uh was 8x when there was no network And when we added the network layer in in grim thumb, you know, it went down to five times so LLVM and all this kochen stuff is very sensitive to to speed of the underlying IO, right? So if you have slow disk, I don't even bother kochen So so that's what You can see it quite apparently Okay Here's q5. So we joined six tables with three broadcasts Um, for some reason grim thumb didn't think of support. You have fully replicated tables from the beginning I guess the reasoning is, you know, if the table is small we just The the the broadcasts would be cheap, right, but it it's still uh, it it makes sense for Green thumb regular green thumb, but with LLVM speed up you can see the impact here, right? So the speed was five times faster on postgres and here we see it about two to three times faster After all this redistribution over the network of data How much is like is pivotal actually actually maintaining green thumb like Um, they're they're they're doing mostly the the the merging um I think the effort isn't catching up to postgres 12 now Okay, so so the the latest version of green thumb will have the the the basic limited Compilation of like the expressions that postgres added Yeah, yeah, okay. Yeah It's mostly It's mostly, um a lot of tp stuff that they are they are adding Oh interesting, okay Yeah, you know all this the postgres improvements doesn't really Address olac, right if you look at the hash join code in postgres Uh, it doesn't overflow. It doesn't have spills. It doesn't support spilling I was amazed at first So here's q 17 where the boom filter really makes some make a big difference.  This is like nine nine x faster and it's not It's just very good I Originally it was about two times and with the boom filter it goes down goes up to five nine times. So code gen Makes a difference, but Something like this makes an even bigger difference How often do you see that for the for the real customers that like the blue voter makes a huge difference? Um, very very often, right? Okay, usually you usually you have a pretty heavy filter Somewhere and you can just avoid a lot of the scans especially on the line item on on on the fact table Okay, so here are some something about fact tables that we picked up along the way talking to customers um, so green plum has This I this thing where You can't have a partition. That's the parent and you can have child children partitions right and each of those each of those could be Either a row table or column table or you know, or even a pocket table on s3 and You can mix and match them and you can you know merge them or Depending on on your workload, right? So the row tables may be accessed may be you know written very recently so you just keep them in row store and then Every quarter every month and you move them to a column wise table and then every end of the every quarter you move all the column table into an Quarter table on pocket in s3, right? so A lot of the customers are doing this because when you do scans and you're only interested in tables in this year Then you can avoid going to s3 at all, right? You can just use the most recent tables better for cash Cash awareness, right? So this is this pretty good and this is what most customers are using especially for fact tables the other thing that we picked up is Transaction is bad, right? So Some of our customers have Fact tables that are generated in the factory at the assembly lines, right? so the machines would just generate csv files and push them up to to s3 and You want to scan those files? And it's not controlled by you, right? It's just the file name measures some pattern Then can appear and disappear anytime But if we were to copy the csv files to the Database table and we do the import into the database There's a lot of work and that generates a lot of locking issues And a bottleneck in in in the database So the external table really helps here you just have a excuse me You would just have a external table definition that points to a url And then you and then you know, you call that url to get the data So the whole table becomes like a service to you That certainly can mess up like query planning, right? Because like you don't know how much data you're actually going to read So therefore your join order could be all in a whack the data the query the it actually provides statistics, so there's a a statistics API as well for for the query plan to obtain statistics on the SMT But if the files can appear and disappear at every time and you don't run analyze Your stats could be get way off. Yeah, you still have to run analyze From time to time But fact tables distribution don't really change a lot Yeah So this is the the worst part So hake if you look at the definition I you know, if you if you find a sea library, let me know I've been searching for that forever and There's no sea library because they they have so many dependencies and the The documentation doesn't have I I just don't understand why why you have a storage document a storage format and there's no byte level documentation. There's It's crazy stuff And then the the dependencies is also, you know, there's supports multiple algorithms and each algorithm may not compile to the platform that you You run on All right, and then you they use drift and then they have nested fields and Just adds a lot to to something that we don't don't use So we actually created something simpler and we have essentially the same design as pocket, but it's It's a lot simpler. You know, we do lz4 only And essentially every time you create a column We would lz for it and if we If we save more than 40 percent Then we store it in lz4. If we don't then we just store it in native format Why 40 percent? That's just some arbitrary number. Yeah You know, if it I think if it's don't save more than 30 doesn't make sense, right? We just store it in the regular form sure Because you're gonna pay to deserialize later Um, and then we support primary types only no nested type no no arrays no nested fields We still support zone maps. So that library is it's pretty good. We may look to open source it later What is that called? Sorry, what is the what is the format called? Simple pocket Oh, so it's a subset of parquet Yeah, yeah It's it it It took some design from pocket It's not actually a subset, you know, but um The the design of the file is essentially the same In in in the big pictures A clarification question. This is panos christiansis. We use Facebook So this parquet is compatible with the standard parquet. So it can be read by impala or vertical or is just No on the design Only design parquet. We guess the design the design and the idea is the same. Thank you. And you know, we support Um vector vector rice filters on Uh out of the box on on those columns, right? Thank you. Oh, okay. So 10 minutes on FPGA Yeah so So FPGA has a lot of compute power, but it's it's it's attached to the PCI bus so you're You're going to do a lot of packing unpacking so So, you know, usually we would have the CPU pack the records send it to FPGA The FPGA would need to unpack compute and then repack the results send it back to the CPU And the CPU would unpack the results and most time is doing all this packing unpack unpack pack Round trip, right? So it's a lot of a lot of work. Um So sending it's all because we're sending data to to to the compute engine. That's that's a problem the whole thing um We view the FPGA basically as a chip that you can create your own instruction So the thing about a intel instruction that takes only two registers, right? So here you can make Uh instructions that take A vector of you know 10 megabytes of data And and do everything and then send it back. It's very white instructions. That's what what we call them, right? um So we so we sort of use it in our regular joins it speeds things up by a little by Maybe two times even compared to lrvm um But if you add in the cost of the FPGA, it's it's kind of uh Hard to swallow so Let's see. So if we do a join like this, um, where you scan the line item table twice and do two hash join um So what we do is we we during the hash join Was it not a hash join anymore? So my co-founder feng actually invented this, right? So you took the records from the left side You send to the FPGA to compute the hashes and that's very fast Just send the key key and index to to the key and index to the record to the FPGA and it will compute hashes And then it will sort them and then so what you get back is a sorted List with index And and there are corresponding hashes And then you do the same thing to the right side and redx sort the both sides and then you can merge them Right. So the redx are you doing the sort in the FPGA or the FPGA is only computing hash Yeah Yeah How much faster is like the FPGA hash versus like, you know, the xx hash 3 Um, it's very fast, right? So that's two things here. So number one is it's faster because It's not code, right? It's it's circuit Yeah, but you have to send you have to send the data down to the FPGA. Yeah, that's the problem That's I said before it's a packing impact Yeah, at some point the the equation shifts towards the the computation Yeah, if you have big enough And the second thing is compute is never enough on the host So if you can shift those to the FPGA card, you can do more on on on on the intel chips For other queries, right? Okay That's really not enough of the current query because you're well, yeah. Yeah. Yeah, okay Right. Yeah, it makes sense to to do this Interesting. Okay. Cool. Yeah So when you merge then then you get the results of the joint There's one usage that that we implemented Um, second one thing has to do with the spatial joint So here's something from a customer. It's us. It's a telco, right? So they have towers each tower have a polygon of the areas that they cover And you know every night they want to count how many of their customers cell phones are sum up the cell phones that are within the area covered by the cell towers and so so now this reduced to a a A spatial joint of a polygon and points within the polygons Right, so we tried to do do this in in green thumb and And you know, it never finished, right? We use post gis and there's an artery And now you have to do a nested loop join using an artery and Whenever you see nested loop join in in green thumb Never finished hash join is It's the only thing that really really works Um, so instead what we built some custom thing for this customer where we know we scan all the towers We built an in-memory filter, right? So you have A very coarse circle that covers the polygon. So it's something like it's almost like a bloom filter You would qualify more 5% more than than you would You would probe and disqualify records that Would never fit This polygons And then you would send pack up the records and send it to fbj to do the final Pruning for each polygons That's how so Does this Your customer stuff back is invoked when you instead of calling the post gis intersect function Or that's like some other different sequel You know special, you know patiss data sequel stuff you've added. We give them a a a function that they call Okay, yeah, that's this so yeah, it's about 50 times faster of the after we do this and yeah So fbj is pretty useful. It's just It's just very hard for Computer science students, I mean who code to know the hardware stuff and I don't even really get into it. It's pretty tough So all this is because we get help from xilinx, right? So, you know, we tell them what we want and they They give us a function that we can call and and use it What is it? So xilinx wrote all this the the three bullets at the bottom The no the the last one at the bottom. Yeah. Yeah. Yeah. Yeah, I got it. Sure. Yes That's cool. Yeah Okay, I mean have you thought about like I mean, I know how hard it would be to To replace the entire post gis api with you know patiss magic Don't have a don't have a customer yet to ask for that. Okay. Yeah We are we are We're very limited bandwidth. We we do what customers ask Of course, yes So, yeah, so what I see really exciting in in in the horizon is this computational storage card From samsung, right? So it's fbj plus storage in one card And then the storage could be four to eight terabytes You can plug like 12 of them per machine A lot of a lot of computation and a lot of storage so each card has a CPU and memory because I think they have about four gig on on each card so Essentially one each of these cards is A pretty powerful. It's a it's a macbook, right? Storage you can You have it in in your in your machine Um, so now you can really push the compute to the disk and we And and you cannot go any lower than than that So our idea is to you know Let fbj run ag on each on each disk But because of the limited memory you cannot scan the whole You probably don't want to do the whole thing In aggregating you may you know do until you run out of memory And then you send the partial ag to the To the cpu that the cpu computes it, right?  Um, again We Will do virtual claps or whatever So we have time for a few questions for ck So again, um meet yourself say who you are and where you're from So maybe I have a question related to the fbj part. I'm laying. I'm a pg student here Very interesting talk, right like many interesting topics and one thing I'm curious about fbj Is that like you you you made one comment? You know earlier earlier side you say that the compute is never enough on the nose You want want to have um fbj as to kind of like offload the compute, right? So what I'm wondering is that well if you say the compute is not enough Then if you can you can add more cpus, right? You can add a more more course, right? I mean that we can also get compute that way. So I'm wondering This is for fbj because it's much cheaper or like Yeah, so that's the that's a good good question It's it's not so much a computer science question as an economic question, right? So we whenever we try to sell this solution to customer You know each of those fbj card could be could cost like seven to ten thousand dollars, right and The question is always You know you have an mpp, right and why do I want to add card? Why don't I just add a machine? Right and so so that depends on customer and also depends on Some customers have very limited data storage, I mean, sorry the data center space Heat issue and all these things, right? So they want very compact things Then you you then then it's worth it to them Right and the second thing is sometimes they use the fbj cards for other Other usage as well, right? So maybe they are doing Deep Green DB I have something on my website where you know, they they do something like deep green db on video images That they need to decode And run some machine learning Image recognizer on on those Files as those mp4 files as well So in that case, you know, they would opt for for fpj cards. I see interesting Maybe another minor question honoring Is the word deep in deep green has anything to do with the popular deep learning here No, we just we just Pick up that it's some words that It's a name that I think deep Luke The cto xctl of grim thumb thought thought of and thought it was killed and we just let's use it Sure. I was just joking Thank you All right. Yeah, thank you. Thanks for the answer. Yeah Anybody else I also had a question. So this is Prashant. I'm a phd student as well So on your last slide, you touched a little bit about fpj as and I think of towards the end of the The last few bullet points. I think I'm inferring that you The idea you have is to synthesize um Per query you synthesize some fpj blocks based on the query that you're seeing Is that is that right? No, so so so fung did something That is essentially a stack machine Something like a fourth thing. That's what he said that you could just give it instructions Uh, you know, think of it like a schema scheme or list machine that you can just give it instructions and it would just um, you know It's it's a simple compute um engine I see. Okay. Yeah, something like like what you guys did, right? It's simple. It's instructions that that that are that are meant for computation, but Uh at a higher level than LLVM Mm-hmm. Okay Stack machines push left column push right column add No Do most of your customers are running are they running on premise or are they running like on ecc or azure? Um, all sorts. Okay I mean in recent years Do you see a trend moving towards like self-hosted gleams on in the cloud versus on premise or just it's still all random Still random still random. Um Yeah, so the the The The selling pitch From a cloud database. It's not really the functionality of the database. It's the convenience right So, you know, you don't need to hire on dba. You don't need to hire You don't need to move machines. You don't need to do start and stop machines all this stuff, right? But I mean there's no I don't like there is a green plum as a service, right? It's either someone running themselves On premise Yeah, it's it's essentially a rental that you can you still need to start and stop sure. Yeah, yeah Yeah, we found this needs administration. Um, it's a complicated piece of software, right? So So the reason they can open sources is because you would be crazy to run this You know without support Yeah, um, yeah the so, I mean The impression I have is it's a very, um As just as you sort of said at the very beginning you took Thomas's paper from the hyper guy and you're like, all right. Well, this is what we're gonna build uh the column store plus the lm but like The the mesh part or that is, you know, that You know, it's called a d-mesh like that's certainly not in that paper It seems like a very like as you sort of said like the customer has these problems and it's whack-a-mole Like, all right. This part's slow. But how do we fix that this part's slow that how do we fix that? Is that a fair way to describe how you have you worked on this thing? Yeah, because we have no choice, right? It's it's we we're not a fresh start You know in a university, right? Yeah, we need yeah So we need 100 compatibility and all we can do is to sort things out that are That still maintain compatibility So I guess my question would be like, um Is there anything that even though it's not being driven by customer requests Is there anything that you look at what green palm out exists today? That you say, all right If we had if we could fix one thing Because this would be you know, this would make a bunch of queries go faster or make our lives easier Is there anything like that that you think No, I think I think if if I have the bandwidth I would do snowflake Sure. Yes, okay Well, wouldn't we all right? Yeah, yeah, okay, uh any last questions Since we are not that hard we can talk about uh any if you are interested later. I have a short time Since Andy brought the market space, uh, what is the reach of green climb? I saw that you run on alibaba in the aws Yeah, does it mean it's china in the united states or you have rich? Europe in other places Um, we we don't reach into we don't have the bandwidth to support Europe But I think in any countries where you do On on prime solutions that it's pretty popular with a lot of local local small businesses Uh coming up and claim that they support it I think you see it a lot in in russia as well russia is especially I'm pretty good at this Russia china But I guess another way to think about it's like like what is the Is the sales process you guys is the people coming to you after being exacerbated with pivotal support or trying to support make green bloom go faster Or is it like Again, there's the people like are you actually selling? Hey, you're doing room pump. We can make a five effects faster for like Is it more people is there more people you find that more of your customers are showing up your website? I think oh, I want this because I I have been on problems now No Well, we have We're such a small company. We don't have really good marketing. So not many people know about us All right number one We do have customers that come that have a performance problem and knock on the door Um But a lot of the stuff has to has to be sales per sales person going to to the customer Because customer doesn't know that they can it can be faster Right. Yes. Yeah, the customer thought this is already the best that they can can have for open source. Yes I'm doing quick tests to see what happens if I search for green bloom acceleration Yeah Oh, yeah, so here's another story that you guys may find interesting. So a lot of the customers are doing batch jobs at night So, you know, think of this as you know banks and greedy firms and they Every night they have to import files Do etl and then they have some windows to run x And if and then they have to update the dashboard at 7am Okay, so the window is it's pretty small and you know, if you can relieve two hours of the window It's yeah, yeah yeah All right, so just Googling green pump acceleration. You don't show up Yeah, I know We need a lot of help. Yeah. Come on. That can't be that much for that ad Right. Yeah All right with that guys, uh, then let's thank see can, you know, virtually, uh, for doing this We really appreciate you spending the time with us today and talking about this


So before starting, you would like to enchant a slogan on Purush. So no matter, today we may be speaking about each faculty or any one mentor. But it is our duty to remember each and every teacher who plays an important role in our lives. So it seems like we are going to do it straight away. Because we are all remembering our teachers who have teachers. That is Dr. Meenakawada who is a professor. He is my professor, whatever I am here today because of him. And he is called a pleasure of knowledge. Whatever he teaches in the class, he was giving an example by that each and every student get clarification. So on behalf of all these good members and this team, I am very much thankful to the supervisor who has made us to make this discussion among us and open the mouth to share the feelings and adepts with one another. Really I am very much thankful to him. Thank you. Another one is a teacher. And he is a teacher who is impressed by all the teachers. Even though we are teachers also, learners. And along with that he is a counselor, speaker, orator. And he did his research and I think by looking at him by the way he was doing his lectures, conducting his classes, we were very much motivated by him. And she is a very good leader, she is very motivated and she is very influential. A great strength of his simplicity, integrity, index, knowledge and unconditional love with everybody. Hard work, passion, compassion, spirituality and everything. So these are things I think any human can become a good teacher. Thank you very much. Thank you. Good leader. And well, Vishal also. A few percent of the role model for me is to put me in a positive way. And he is the optimistic person in a government body. So I hope he was a role model for me. We are the best role person to all of us. So he was not the Messiah man of India and the people's president of India. And also he was a scientific advisor. He was a resident of Bharat Arathna award and also the well-known honest person to our country. Thank you. Thank you so much. He is a good motivator. He is a good speaker and a writer. He writes a lot of books. Motivated books like Ignited Mind, and 2020, Wings of Fire and so many others. I have a question to talk about. We have a discussion with so few talents for us to talk about. I would like to share this with you. In this discussion we have shared a lot of things. I have come to so many information which I didn't know about. So I would like to thank each and everyone who has given so much information and added to my list too. So thank you one and all. Now I would like to share with you the great interest that you have come across. Please sit down. Please say how many seniors would you always put to an end? There will always be a great future. I have a senior classmate who is my colleague in my college. She is one of the best teachers I have seen. Because she has the ability to accept new challenges. And she knows how to communicate. She knows how to negotiate. And she is a very knowledgeable person. So that's why I think she is a very good teacher. Thank you. I am a teacher on its back. Dr. Eshaf Keshiva. And he is one of the main economic advisor of the government of Karnataka and other people. So that kind of a motivator is. Thank you so much. Professor Eshaf Karnataka was a teacher as well as a colleague for me. He is a mentor who led his life by an example. So he is here. I want to end the quotation. These are the three pillars we will use to see. But another pillar I want to add for this quotation is Jai Javan, Jai Kisan, Jai Vikran and Jai Kuppadyan.


There's a breakfast in plus TV Africa time for off the press as always. We have a Zika Nyaituk who joins the conversation is a public affairs analyst. Good morning is Zika. Yeah, I took it's good to have you join us Good morning. It's a privilege to be on plus TV Africa. Thanks for having me many. Thanks as well let's set up with the leadership newspaper and the manner caption for what the leadership says 2023 PDP governor's shown at Tico's declaration meets in Abia very interesting as we In closer to 2023 a lot's going to unfold national chairmanship APC governor's concede to President Muhammad of Oari. That's PMB on consensus candidate Say we will support presidents anointed are aspirant in a democratic dispensation and we constantly talk about democracy in our political parties Because if you can't have that, you know at that point to the foundation and would you rather not expect, you know The largest skill or the biggest skill You also have pressure mounts on all the aspirants to step down ahead of the convention Bonny meet senator today. So all of the politicking and All of the interest and lobbying would actually start Electoral at Nass set for showdown with executive over Abia courts vetted federal executive council approves 92.1 billionaire the second Abuja airport runway That's also what you find and just before we move away. You also have 5000 resident around leaky deep seaports may relocate interesting I'll cry in a door as a basket sack 514 workers and You also have neto chief ones Moscow ahead of the emergency meeting talking about the Ukraine issue Ukraine and Russia consent. This is some of the headlines would take this morning on the leadership Away from the leadership we'll move on next to the nation newspaper The lead story this morning. Buhari governors agree on Adamu as consensus chair Which I'm right is there senator in the money south senator carry north endorsed as deputy chairman on unity list No election at convention or that chair aspirants to get refund of nomination fee That's the main story on the nation above the masthead Oguani or ladik both 35 others in PDP zoning panel beside that story Widest circulation, okay showing card the cries protests over all a uvc Agitation is crazy. Once again showing card the cries protests over all a uvc Millions gone as fire raises leaguers at Benway markets Give us another chance be the big governors big Nigerians other stories on the nation this morning IMF ready to lend more to Nigeria So all lunches legals ride with 1,000 cars And then the red strip here. Let's see who can take that one or your government said to hand over GCI to old boys Association those are the stories you can find on the front page of the nation newspaper away from the nation we take a look at the Punch and on the punch she talks about the electoral act National Assembly Plans appeal tackles George Malamune system amendment and this is what you find underneath Bajabia Miller acts a Tony general not to temper with electoral act Caught ruled that the provision be deleted not part of our law Malamune is quoted APC moves to bar appointees from voting at convention and primaries. These are riders underneath the board caption Still looking at the front page of the punch quite interesting headlines report where your husband resides and NYC tells married prospective corpus and Buhari others silver carry CDS to hold crude oil theft and Sardin Kaduna Boz dead for he's 37,000 church attacked Settlements raise very very sad PDP governors list Buhari regimes economic woes and boast better leadership and Just at the time where you know, there's a lot going on especially in security Economic hardship and what have you?  So you have people I mean governors senators everyone Lobbying and the politician is ongoing who becomes the next governor who becomes these and The issue of governor especially for those who are contesting. I mean for those were Incumbent for instance governors and senators and what have you has actually been relegated You know to the back end. So politics has taken the front seat really sad 1000 taxes will provide employment says So will you that's talking about the governor of legal legal state and the lag right that was launched you also find out autonomy this regard fire me I carried the loser position NUL GE tells Buhari legal shorts Damage a co-bridge as fire destroys market traders actually lament These are some of the headlines we take this morning on the punch newspaper And then we'll move on next to the Tribune All right, electoral act National Assembly to appeal judgment on section 84 subsection 12 With the writers there we are working to implement court or they had a court into the AJF But Jabya Miller wants Malami against hasty enforcement of ruling Lagos right someone Lou rose out 1,000 cars for taxis Kim Pegasus and a blames fuse Cassidy on lack of Forex Traditional worshippers dissociate selves from invasion of all AU campus Lagos free trade zone investments to heat 461 billion dollars in 45 years. That's according to nebsa APC governors in those Buhari's choice for party chairman as Zones work toward consensus candidate Adamu Musa Alma Kura Akuma Most of our mission ray face screening committee Senate caucus meet CEC PC Today now fact. Okay, it's ninety two point one two three billion narrow contract for a Booja airport second Runway above the must-have Nigeria a sinking ship Needing urgent rescue a Tico says twenty twenty three a choice between unity and division fire raises bridge shops at a book more in Lagos, those are the stories you can find on the tube in the front page that is All right, let's have is he coming out to show his thoughts this morning on the papers is equal once again Thank you so much for joining us All right, let's take a look at the the punch newspaper here talks about the National Assembly and the plans to appeal Section 84 subsection 12 and the fact that Malami insists on amendment Calling the Electoral Act. What are your thoughts? The very first thing is that we must realize that this nation belongs to all of us and that the people that have been Elected into government and those who are appointed by those who we elected All put there to serve us they are paid by our money and As a result, they owe it to us as Nigerians for them to do What will be in the best interest of the generality of the people? To that end, I think it is despicable. I think it is shameful I think it is unethical for the attorney general of the Federation To handle a matter as sensitive and as important as an electoral act in a way that he goes to one place brings up a case Without getting the principal partners to that case to be heard and a man who is a judge sits on that case in almost record time Gives judgment to that case without any difference To the principal partners to that case In the electoral act You cannot But see the National Assembly as a principal partner You cannot but see INEC as a principal partner You cannot but listen and hear from them before you make a judgment and Anybody but the attorney general should be one person who says for such a sensitive matter Let hear from all the sites before a judgment is given No, the judge goes ahead to give a judgment on such a sensitive matter And then the attorney general who should be the custodian of do-rightness in legal Judas prudence is the same person who is rushing with lightning speed to want to Activate the necessary legal proceedings to ensure that it is expunged as directed by the law and Yet so many other judgments that have been given Validly given seen by the public as being valid No response is made to them by way of implementation now The the the National Assembly I must commend them Particularly the House of Reps have said number one. We're going to appeal. I think that's both arms of the of the National Assembly Number two from the House of Reps We are going to write the National Judicial Council because this is unethical This is an abuse of office. This is something that is unacceptable And I want to say if you follow the readings on the social media Which is the the the market place or the village square of Nigerians You can see that Nigerians are incensed and they are 99.9% behind the National Assembly my la mission Please know that we are paying him to serve us and not to serve his personal interests If he wants to contest no problem, you are at liberty to contest, but please step down and contest No problem. That's what the law says for now And if you don't want to step down then follow the proceedings and I finally want to tell a PC That they should be very careful because if they want to take the law for granted Zanfarah experience might come back to bite them All right. Let's do talk about the APC. They are still in the news with Different captions from different Newspapers leadership caption. Yes, this way national chairmanship APC governors concede to PMB on consensus candidate. Well, the nation captioned it this way Buhari governors agree on Adamu as consensus chair their national convention is just Days away all about it's a day or two away So what do you see playing out really on the 26th of March is you can I will tell you this for free APC has found itself between the rock and the hard place and They've got to bring Strategies to help them navigate the minds We are the minds Number one, there are people that are not in APC anymore But they are still in APC. Sure. You understand what I mean They are there to Scatter that whole thing because they've left APC already. Okay, I'll give you a very little example Please do a man like Juan Cuasso was not like trying to be a gentle man He probably would have stayed in PDP Until the dying minutes when he knows that it was his heart was out of the PDP and then all the damages are done And he will leave. There are people in APC that are no longer members of the APC But they are going to get their pound of flesh They are determined to get their pound of flesh. So they are waiting and APC needs to find a way of praying to identify such people and know how to handle them and not to take them for granted number two, I Believe that APC advices have been able to read the current electoral act Which is so important on the concept of Consensus well, you may say this one. It is about the party and not about election I don't know how those things tie up, but within the concept of Consensus in the current dispensation there must be an Agreement of all parties concerned possibly in writing All parties if one person says no, I don't agree You've got to go to back to the back to feel that before they could ignore the person and just move on these days One insignificant person can go to court and the court will be very clear on the matter So I think that APC needs to be very careful on what they are looking at as being their Consensus person to ensure that whoever emerges as a chairman will be a man that is Eligible to sign the forms of their candidates to INEC that is recognized by INEC So the processes and the procedures know the such that they're known is imputable that's very very very important and Finally I've said it before and I say it again The extent to which everything hinges on one man Just shows a very weak party that has no systems. No structures and such a system Wanting to come back is taking Nigerians from granted This convention should have been one area where they tell Nigerians we've rebranded with change We are coming with a new approach. We are doing things properly Trust us, but if at this dying minute APC is still APC They are wanting to come back. I think there's something they know that I don't know but trust me that thing Must be in their minds But let's still stay with you know the APC and the fact that's on the leadership By the way, you have the leadership seeing the national chairmanship APC governors concede to President Mohammed Buhari on consensus Candidate and it's part of the thoughts that you have held just before now But as you can I took we know that internal democracy. It's a principle that's so important You know to a democratic regime. It's not just in Nigeria, but it's a global phenomenon and the fact that if you know the lack of internal democracy would always cause Interparty conflicts and that at the end of the day would trickle down to you know democracy as it is So, um, don't you think that you know at this point in time? Where we're thinking about I mean having the electoral laws because we begin to question some people like you have always said you Have become a big fan of the president for just simply, you know, giving a yes You know passing an assenting to this electoral at as it is but we still find all of this element which are still very You know fundamental to our democracy You see those elements Will have to be there until the mainstream media Wakes up to the reality that Nigeria does not have two parties Those two parties are going to keep making the mistakes They are going to keep shooting themselves in the foot and they are going to get themselves out of reckoning Now what what bothers me about mainstream media with all due respect is that We why do we think that we have two parties in Nigeria? It's a myth. It's not a reality you see One day I'll have an opportunity to do a synthesis to Nigerians on What we have been calling election and under this this Bogus thing that we call two parties Two things I would like to tell you for free one APC members plus PDP members All put together the form less than 40% of the voting population We've got to know that Forget those figures they give you go to an umbrella state Man that had over three to four hundred thousand at primaries could not get 50,000 at the election This election is his members and Non-members of his party combined. He could not get 50,000 or there about but in his party primaries alone. He had over 400,000 this is bogus figures that are founded that is why I like the current electoral act Secondly the way they conduct elections in the past is you just take a few forms and go there to the polling unit As soon as they leave there just divert between the polling unit and the coalition center Divert pack the car settle the police settle the parties settle I net settled Everybody and then feel your funds. We've never been having elections in Nigeria. This is going to be the first time We're the figures at the polling unit are the figures that get transmitted to Abuja Are the figures that everybody I'm contesting the governorship I am telling you that at the close of the elections in 2023 I already know myself from the current electoral act Nigerians need to be a lighting to know that But as you can yeah, I took I totally understand where you're coming from But one will begin to query an electoral act that does not promote internal democracy an electoral act That does not address the issue of you know fundamental Democracy and allowing the people to express and allow people, you know to express themselves At the party level, which is very very critical. We can't take that You are wrong the electoral act has made it very clear That you have three ways that you have your candidate emerge You have direct primaries may every member of the party vote like we are going to do in a DC It's a choice. These are the sort of things that the main so So why do we give the choice because as long as you leave that option? We understand the back and forth that has been but is it going? Yeah, I took you on this I mean we were here We were here when we had the back and forth with the particular close until that close was included And we know that the consensus clause that has been included in that bill just allows power to you know It's like few leaders and that was That's what's going to constantly happen. No, let me tell you let me say I've been a national chairman of a party and I'll tell you this globally Globally you can have direct primaries. You can have in direct and you can have consensus Now what the current electoral act did was to Make sure that what they did before on consensus is stopped.  We are bringing that man, which is autocracy, which is in position They said no if you have sold forms to four people all the four people have to agree that We accept this man All the other three must agree If any of the three does not agree you've got to go to the field So so in the case of the APC you think that there's some some sort of agreement That that is they are they are still living in the past They are living in the past they've not come to terms with the current realities That's why they didn't want this this electoral act to see the light of day when we sit down and do a Synthesis of the current electoral act. You will see that we've taken a bold step forward It might not be everything then we've taken a bold step forward We could not all do direct primaries because there is no party platform That will be addressed after this election. I've written a letter to National Chairman of INE There is a way to organize the party register of every party and put the membership in three categories active financial Non-active financial others active financial means you have your PVC and you've paid your membership dues Non-active final financial is that you have your PVC, but you're not paying your financial your dues Then the third one others is anybody including children where you want to know groom them on the ideology philosophy of the party Now those that are active financial They have your PVC and they have paid your membership dues will all be voting members Delegate in every election By so doing you get people to pay by dues and you get every member of the party to be part of the leadership recruitment That is the way forward that is too soon for now. You can have that register now So let us manage this first process and get to the second phase for now I think Nigerians need to know that if a PC and PDB are not willing to do the right thing There is an alternate and the mainstream media should also bring up this alternate because there's too much silence about the third force which is ADC don't dismiss them Don't dismiss them bring them in the mix so that Nigerians have a choice All right, uh, Mr. Aitok. Let's move on to other things for sake of time So always in the news, uh, practically all the papers are picked up on these um legos, right? He has launched a some sort of a taxi You know scheme and uh with our thousand Taxis Yesterday, you know, I also want to get your opinion concerning that it's in the punch It's on the punch on the nation newspaper as well You know, so the thing is that uh, legacy government is actually taking Into or investing into transportation yet again You see that as a as a good step a step in the right direction Or they want to compete to the private sector. What are your thoughts really? You see governments I am one person who believes that government has every business being in business because Government must be the most organized sector The most focused sector because government has our lives in their hands And Miyato cannot afford to live his life on the hands of somebody who is irresponsible We must come back to seeing government and putting it on them to be the most responsible The most organized the most focused If you look at chapter 2 section 14 subsection 2b It says the security and the welfare of the people Shall be the primary purpose of government now leave the second part then the first part the security and welfare of Your yourself everybody is the most important thing And that is put as the primary purpose of government Come back to um, my brother obon samolu You know when he removed my friend and schoolmate ambide from office. I was very very unhappy You know ambide and I were schoolmates federal government college worry and understandably You know secondary school is where you have like your best friends and all that But I must say that just like Buahari has signed the electoral act and I'm forgiving all his son his sins I am since someone who has come in he's acted very well And I'm I'm very happy with him very very very happy with him coming to transportation Let him Look at ibum air for instance in akwaibom Everybody including myself.  I don't agree When they started operating I came back on air say I take back my words. I apologize. I'm very happy Today ibum air is the best run airline in Nigeria without a doubt Any businessman who wants to go on time takes ibum air to that extent if lego state Can also play that same role Of bringing if uber can be that you know both can be that effective and efficient Lego state can as well come in and play in that market And get a good chunk of the market share and give legations They can even as government be able to play down on the profit margin Such that the drivers the commission that goes to these both people Can now go back to the community to the drivers and they could be a relative Regulation on the first So government has every business in kind of networking with the organized private sector to get this thing done I don't know the modalities But I want to say if the modalities is right the lego state government would have studied something that other state government Will emulate and by the grace of god If I become the governor and we also emulate because there's nothing new Is it okay? Yeah, I took let's get it a little bit into this one I mean you still have some people who say government has no business in being in government. I mean in being in business Governor So if god, I mean because a lot of people would still say and it's an argument That's been very valid because if you begin to look at some of the enterprises and Businesses that government has been involved in I mean, it's really in a sorry state So, um, that argument will still remain that government has no business in being in government or in business Rather government should be In the business of ensuring that there's an enabling environment provide security Where you have the private sector thrive and we have seen that you know As an international Phenomenon and practice across board, but let's even calm down I mean it's a good thing that the lego state government is delving into transportation thinking about it But recent incident that has happened where we still hear the government saying oh, we're involved And we're here in the back and forth with the brt The brt would be the most safest one. We think it's the most safest But the sad incident that happened in lego is one that has actually discouraged a lot of persons Even though you still have some people patronizing and so with that, you know Thinking about that and looking at that situation and having this what's what's the security because one would not think that Elements would take over, you know a system a transport system at that and begin to perpetrate evil. So, um, How then is government good at being? You know in business or should governments to really be in this business of transportation? I'll tell you this Google Is able to track globally everything going on Both is able to tell you all the streets In all the cities of the world What am I saying the power of technology?  You don't run away from problems any problem that comes Like I just thought of this Okay, it means that if there are people that are in charge of that transportation system and they they are only safety In two levels Safety of the vehicle to make sure it's in check at all times. There's a checking manual There's a center that services and gives you every six months You go for accreditation and because of the way it's done you get in the fix your system You get out you must then you have certificates of change of tire If it's every year or every two years In fact, there's a system that they regulates that and then you have a camera inside That camera shows what's happening in that car 247 is a tracker when that is done Lego state government would have given us a system of transportation that is safe And can be subsidized Because the business of government is to make life easier for the people what I cannot and finally let me say this PPP is a global best practice as of today I am building one of the biggest estates in a quiet bomb In fact in the southern part of Nigeria where government is not putting 10 naira for any of the houses And yet they have an estate with full infrastructure and everything Now that is the way to go PPP. So let this transportation be done through that PPP platform And then I mean not that I'm going to expect a response from you because we're out of time But if PPP is actually that model that should be adopted We still have some governors, especially in the south side. I mean the south south region who have said We're going to adopt this pattern But there's really nothing to show off at the end of the day in that state. Anyway, so get the right people get the right people This is the time All right. Thank you Izzy Kenya ita for your time and your input on the show this morning. We do appreciate it Always a pleasure. Thank you. God bless you All right, it is still the breakfast and plants TV Africa. We are going back today in history. What happened This day back in history. We'll take that and we'll be right back stay with us


Can you imagine making $25,000 for an hour long speech? Wow. Let's get our life together and find out how to be the best entrepreneurs we can be. I'm Kyla Benigno and you're watching Kyla's Reading Day. So today we are talking all about the book entrepreneurial you. This book was written by Dory Clark. The genre of the book is nonfiction. The theme of the book is business management. All right. And the tagline of this book is monetize your expertise create multiple streams of income and thrive. Yes, please. So one of the most important things about monetizing your expertise is to decide what you want to do. Okay. Dory goes through podcasting. Is that for you? Would you like to start a blog? Do you want to run an in-person course? This book was put out in 2017. So I would love to see an update post situation and see how things are changing in the virtual course space. So real quick, one of my favorite things about this book is all the little action items. Okay. In every chapter, Dory either gives you an example of like a template email or ask a thought provoking question so that you can make sure you're retaining all the information. Okay. So some examples are download a free copy of the standout self-assessment which enabled me to grow my email list by 150%. I want to do that. Also, what do others consistently ask for your advice about that you could turn into a blog or talk about on other people's websites? Is it possible to systemize that knowledge and create a course from it? Right? If you're going to monetize your expertise, what are you an expert in? Well, I've been running a podcast for three years. I'm always asked how to start a podcast. What to do? Hmm. I think I'll become a podcast launch coach. And so I did that.  I've already launched two podcasts so far and I'm over the moon because I could talk about podcasting all day long. And while the clients I'm attracting don't have time for that, they are letting me be in my wheelhouse and play and edit and clean up their audio and so Dori also talks about creating multiple streams of income. I'm talking affiliate links. I'm talking about blog ads. I'm talking about podcast sponsorships. I'm talking about dedicated podcast episodes, dedicated blogs, you know, speaking engagements. My mind was blown. I was like coaching. She's paid from coaching as well. And I was like, Oh, y'all getting money money. I'm gonna get some money money, right?  I'm so excited that we are here talking about entrepreneurial you. I talk about books every single week. Make sure you subscribe to the channel and let's get into the last point. And so the last thing here, what does it mean for you to thrive for you? If you are in a very comfortable place, you may not need multiple streams of income or maybe you've narrowed down your expertise, but you don't have time for anyone else. You are so busy working 95 hours a week with your own business that you're not thriving in your professional lives, right? So you have to determine what it means for you to thrive and you have to run, chase, yell, do all the things so that you can get it. Okay, because there's no point in monetizing your expertise, having multiple streams of income, if you're not going to thrive, they work together. It's a three-part step. And if you're still interested in this topic, take a look at this video here. I talk all about radical confidence and how it will blow your mind. Okay? No bull. What's it going to take? All right? So go on and enjoy this next video and I'll see you next time.


Presentation about pre-rendering media sets have not just been notified. My name is Wolfgang Ziegler or Fago on video talk. My Twitter handle is the real Fago. You might know me like from some of my Drupal contributions already. Like I worked a lot on Drupal 8 entity API for Core. I'm also like maintainer of the type data API for. And in Drupal 7 I wrote quite some popular Drupal content modules like rules entity API of your collection. I'm running a small Drupal company, Tonomix game behind Vienna, and I'm working there as CEO C2. So what's pre-rendering actually? So pre-rendering is like basically when you have a data source like in our case Drupal and some sort of pre-rendering process which generates static files. So that's very convenient because static files are really fast. So why would you do it? It's fast. And it's also like very robust static files. Once they are up, they are up and there's like no way of that. Basically breaking it very easily. And then pre-generation is also a very easy way to decouple because like all of the modern frontend frameworks are also like tools for pre-rendering so you can use them. And that way you can decouple also without any SEO concerns or you can also like really keep the hosting constant, the complexity down because you don't have any Node.js zero set rendering stack to maintain around. So that's like really a good and simple way to get started with all the modern frontend frameworks. In this presentation I'm talking about Node.js. So what Node.js? It's a progressive VJS framework. So what's VJS? VJS actually is a very approachable modern frontend library. It's one of the main alternatives to REC I would say. And we decided to use Vue because it's like really an approachable library. So it tries to stick to the HTML standards. It makes it very easy to get into. It has great documentation. Also it's very versatile. It's easy to get started on it and it's also incrementally adoptable. So there's like a Vue router, a Vue store like all of that kind of official companion libraries that you can just decide that you can use together with the main rendering library in case you need it. So it's like less choices compared to REC but makes it also very convenient to work with because it's just all there and integrated. And finally it's also very fast. The library is not large. It also uses a virtual DOM similar to React. And then Node.js, it follows basically the Vue.js principles but it's like a fully-fledged framework which includes everything that you need for web application. So it has all the web back, JavaScript translation set up all the CSS prepossessing and everything configured. It's like an easy way to configure your routes which automatically get automatic code splitting for optimal font and performance and so on. It's built modular so there are modules like for progressive web apps or Axios which you can add to the stack very easily. And in the end, yeah, it's just performance and very enjoyable to work with. But then it also has a nice feature of different rendering modes. So by default what you can do with many frameworks very easily is that you have a single-page application which means you have some small initial HTML page which just delivers the JavaScript application and from there on everything is JavaScript and you just use the APIs. But then it also has a server-side rendering mode which means basically you have the same code running on the server and on the client to render a site which is very convenient and good for SEO. And of course there's the static generation mode which I'm talking about here. So you can use it to pre-render stuff into static files so you don't need a server to host things. From there on actually you can also combine it with the single-page application approach to use APIs. Then Netlify is a hosting or like a general platform for running static sites. It's integrated with Git and GitHub and there are also things like Bitbucket and GitLab so it reacts in the webhooks and automatically deploys your code from there. It's really nice and convenient. It's also integrated with the branches, pull requests where workflows can get you an automated preview on your pull requests and all those things very easily and it does that by basically just running the pre-generation in the build process for you automatically. And then at the end of the pre-generation process there are the static files which basically it puts into the CDN and serves for you automatically and it does that by leveraging atomic deployments for your files, you get SSL, it's automatically managed all in a CDN and it even has a free tier so it's really easy to get started and work with that and it's just convenient to use. And in particular, it's also very convenient and easy to work together with NUCJS so basically when you want to try and get a feeling for those things you can just recommend to follow those three steps, it's really, really quick so you can just run that command like npxgridnuxapp you get a new project you push it in the GitHub repository then you log in to netlify.com you can connect it to GitHub you basically paste that build command and then run generate and you can deploy it it's really everything that's needed to get it going it takes about 50 seconds to build I just tried it yesterday quickly and you'll get up a page which you don't see that's basically it so that's a really great setup for serving content when you have static content to serve you can have Drupal as an editorial application in the back and like once something changed you can just trigger a new netlify build and the whole site gets rebuilt there's also an API so you can also like provide a button click for your editors to rebuild the site or even determine automatically when there are changes then from there the deployment just happens automatically via netlify and you get all the benefits like fast and reliable hosting and CDN so that's quite nice but how do you do like with that setup like how do you do instant updates when netlify changes get a quick update or handling large amounts of content as you can imagine it might be difficult like pre-generating like really large sites also like handling personalized content of course it's pre-generated so it's the same for everyone so for personalized content you basically you can just use the APIs you have a general pre-generated site basically as Google would see it and from there on you can use JavaScript you can use JavaScript based logins and login via API and then also you can fetch additional data via APIs and based on that data use Vue.js to handle the or let it handle the updates to the DOM and have updated content for the user so that's actually a good way to do that for instant updates basically what you could do is like just yeah, regularly pre-generate static sites it depends on how instant you need the updates if it's just like every five minutes and you have a small site that might be fine but still that might be not fresh enough so what you can also do is basically is that you then have the APIs look for more recent content after page load and fetch that and then update the site of the initial page load that's also like a quite easy way to get some fresh content on a static site in addition but when it comes to handling massive amounts of content it actually turns out to be a little bit more difficult so yeah, pre-rendering huge amounts of content as you can think can just take time so with Nuxt.js it's about like 12,000 pages it would take about 20 minutes to pre-rend all that so the ideal setup would be if the framework would know okay, something changed so only those 10 pages changed so I can only I only need to pre-rend the dose and update those but that's actually not there so that's not working I don't know if from any other static chat generator to have that feature right now actually I think Tomer, the Drupal module which is a static site generator available for Drupal can do that but I never tried that I must say but in that setup what we came up with as a solution basically is just say okay we take the pre-rendering for the pretty much static parts and then we deliver the main content via Drupal so we have the benefits of both worlds so if you got on a typical media side what you usually have in the footer and the header and all the navigation it's pretty much the same across all the pages so that actually makes sense to have pre-rendered so what you can do is basically you pre-render that, the header, the footer navigation and then you take the dynamic content from Drupal and then you put it together and have your complete page like with the header and footer being pre-rendered and the main content being dynamically served to Drupal so you might wonder so yeah okay then you are back to rendering on the backend again so there's the benefit so what we figured what we can do is that we don't do a full rendering on the backend still so we just render simplified markup that turns out to use so-called custom elements and that custom elements then we can very easily render on the frontend on the client side with UJS so on that slide you see two examples of custom elements for like a quote paragraph and the footer paragraph and that's actually the markup that we decided to use with those paragraphs so you see the quote it just has the regular quote content there's some nested HTML and it also uses some special tags like the offer tag to denote like a special slot which then the frontend can use to work with and to style it accordingly and the same way for the Twitter paragraph where the main thing actually is just the source to the tweet and then the rest can really be done on the frontend already so given that combined like the static breed-generated page share with the dynamic content and custom elements basically what we figured what we are grading is really a new way of decoupling Trooper so we called it basically lupus decoupled Trooper and I'd like to show you that a little bit closer and explain it a little bit more how that's working so as mentioned we pre-rendered the page share but the pre-rendering and the dynamic content needs to be combined at some stage so in the beginning we have a front box a small application which pre-builds the page responses for the users so when a request comes in it will fetch the pre-generated page share from the static site hosting like from Netlify and it will fetch the main dynamic content from the API from Trooper and will give the response to the user so the user will get basically all the full HTML the pre-generated site with the dynamic content in it and actually it will forward all the headers the cookers and the sessions to Trooper so what turns out quite nice is that all the form submissions call the sessions and everything it's just working so you can still use it so you get the decoupled rendering but you get still all the Trooper features so we have a small package on github which does the front-boxy handling it's actually quite simple PHP package nothing special really but the way it's working when you have a user coming to a URL of a certain path it just requests the same path with an API prefix from Trooper and it also requests the statically pre-built page share, combines it and returns it for getting the API response from Trooper we did a small module which we called the lupus custom elements render module it basically leverages the possibility from Trooper to switch out the main content renderer that means instead of a regular page response when Trooper would take the main content and take it to your blocks layout and put it into your blocks page it will not take the blocks layout but just deliver the main content in a small chasen response which in addition to the main content has some necessary page metadata like the page title meta tags, breadcrumbs everything basically the frontend would need in addition to the main content to have a full working page and given that it's also possible to do client-side route changes so the first page request as explained is just handled by the front boxy but subsequent page request can be handled by client-side application change client-side route changes so the client-side server script can just fetch the via API the content after clicking on the link and then can take in the content from the appare response and also the page metadata like the title and add it into the page and still the page will be updated as usual as like the framework features will be taken care of handling the updates and that's actually quite nice since it results in a better user experience and performance as it helps to avoid the full page reloads. Speaking about custom elements so they are actually the key part of like making the dynamic content rendered properly on the client-side and that's actually something that you cannot only do with futures you can also like work with web component with what is actually exactly that approach but also like reactors also library which you could use with React together so there are many different approaches actually for rendering custom elements on the front-end and you could use that approach with any kind of front-end framework which is able to do that and what's also nice about the custom element is actually that they are SEO friendly without you having to do any Node.js server-side rendering since the HTML responses they come with all the regular content in there as I've shown before it's also like the content is like just part of like nested markup so it's all in there and also custom elements it's like not just an invention of some library there's also like a standardization process as it's like standardized as part of the W3C as part of the web component movements so custom elements is one of the specs which are part of the web component spec essentially and what you get in there is really nice simple and clean markup for your content but actually also really convenient and speaking of SEO makes sense that you also like take care of rendering essential data with standard HTML type attributes so like for example links are really SEO relevant so this is how we make sure like if you have a teaser on a site that usually links to another Node so it makes a lot of sense that Google is aware of that so that is working by having a special attribute is which like view understands to tell you this actually is a teaser wide component and it will know how to render it and how to pick it up but at the same point it's like a regular anchor tag and also Google will know to interpret that so for that there's the custom elements module which helps you with rendering entities into the custom elements markup it also comes like with custom elements evermere sub module which turns it all on by default and it works it has a similar API like the symphony a civilization API and it's also compatible with the build a module which makes it quite nice so with that we basically have a simple novel approach for progressively decoupling Drupal it allows you to decouple your font and rendering from the backend very easily while you still stay in control with the backend so you still have like all the routing the URLs, pop aliases, form processing or sessions so that's actually quite handy to not lose that so you don't lose all the things that Drupal provides to you and speaking of that you can also leverage all the caching capabilities like easy caching and scalability as usual with Drupal you just need to take care of caching your API responses which is a regular single Drupal response so you get to use the advantages of the decoupled frontend editors and site managers can still stay in control, you can even use things like the layout builder you have good performance like you don't need to take care about cache tags for things like the page shell it's already breed generated and you don't have to do like Node.js hosting if you don't want to down there of course you have a custom architecture that your team needs to understand but if you're really into it you can also as I mentioned there's Node.js rendering as an option so you can decide to use that and turn it on I won't go into details here since we're out of time so thanks for the presentation join us for the contribution opportunities and don't forget to read the session if there are any questions I don't know if you have snow so you can catch me on in the hallway I'm happy to start today