Marisa for that introduction. So let's begin. So first a little bit about myself. About 15 years ago, a few years after that, I was the creator and maintainer of the kernel-based virtual machine. And so I participated in many Linux Foundation events. Later, I was the creator of the CSTAR-IO framework, and I'm working on CELADB, where I'm the CTO and co-founder. For those who are wondering, the virtual background behind me is a screenshot from the movie The Black Hole from 1978. So if you recognize it, that's good for you, but also it means that you're old. So let's begin with the presentation. A little bit about the structure. So the presentation is both generic in that it doesn't apply only to CELADB. It's something that you can apply in your applications as well. But I will also explain how the principles within it apply to CELADB. And for those who are not familiar, CELADB is a high throughput distributed node SQL database. So you can scale out by adding more nodes that's necessary if you need more storage or more compute. It is compatible with three different protocols. So the Cassandra protocol, the first protocol we supported, and also Redis and Amazon DynamoDB. Of these, only Cassandra and DynamoDB are really supported for production use. Redis is not a mature implementation. But Cassandra and DynamoDB are mature and are used in production for many years. So it uses thread per core architecture in order to get the high throughput. I will elaborate more on that later. It is self-tuning. So we try to avoid all the fiddling with configuration variables, which can be very hard in distributed environments, because every configuration item affects every other configuration item, and it can be an endless loop of tuning. And the main use case is online transaction processing. So real-time event processing. But we also support analytical processing on the same data. So you can fire up Apache Spark on this data and perform your business intelligence queries while the database is serving real-time requests from users. So let's compare throughput and latency and see why they're at odds with each other. So they're not really compatible. You can usually achieve one or the other, but it's hard to achieve both. So when we're doing throughput computing, we want to maximize utilization of our resources. We want the CPUs to be at 100%. We want the disks to be busy. And we want to offer a lot of requests so that if there is network latency or latency from the disk, then the CPU isn't idle while it's waiting for responses. But you want to generate a lot of concurrency, and you want to make sure that there is always something more to do. And it's a total time for an operation. So if you're running a query that takes several minutes or maybe even several hours, what's important is to minimize the total amount of time that the query takes. And it's okay to reorder or serialize the operation.  Let's contrast it with latency computing, which is often denoted by OLTP, online transaction processing. So there you want to leave some free cycles so that if you have a traffic burst, then you have those cycles to absorb them. You cannot predict the data, and so you cannot do read ahead. And also when you write, you often cannot buffer the data. You must write it immediately in order to ensure durability. So you want to be able to promise to your users that if you respond to a write, then that write has reached disk, and they are sure to read it there. So that increases latency. It's the individual operation time that's important, and not the total runtime of the entire job, because if you have live humans on the other end of the application, they have clicked something and they want the webpage to appear promptly. They don't care about all of the other users. They care about their own operation, and as the operator of the website, so do you. And you have lots of operations that execute concurrently. Multiple users clicking at the same time, or it can be an application that aren't humans behind it, but still generating a lot of concurrency. So those are quite different, and perhaps the biggest difference is that for throughput computing, you want to saturate your CPU, while for latency computing, you want to leave free cycles to make sure that when a request comes in, there is a CPU available to process it. So why mix them at all? So there are two answers to that question. First, you might have two different workloads that run on the same data. It's often called hybrid transaction and analytics processing. And here you have your users who are clicking their way through your website, but you also want to run analytics on the same data. And you could spin up a separate cluster for analytics and run those analytics for years on a separate cluster, but that's more resources, and you also need to transfer the data, keep the data always synchronized. It's a lot of hassle, and it's better if you can do it on the same cluster. And the second reason is that you have some internal processes within the database that look like an analytics query. So one example is garbage collection in the Java virtual machine. So it's a throughput-oriented operation. You're running through the entire memory, looking for memories that you can throw away. And at the same time, you have your application running and processing real-time events. And the same thing happens with the database. So with the database, garbage collection is a process where you look for records that you can expire or records that became obsolete because they were overwritten and remove them.  And in a database, it's often done via a log-structured merge tree. That's a very common structure these days for maintaining data. And you have cluster maintenance operations. So if you're adding a node, so while the nodes are serving those real-time operations, you also need to stream data to new nodes that are being added or stream data from nodes that are being decommissioned. You're performing backup or your scrubbing nodes, which is looking for errors and correcting them. So all of those operations, from the point of view of the system, they look like an analytics query. So they're throughput-oriented and they're running in parallel with an OLTP workload. So we have a lot of motivation to make sure that we can run those two operations in parallel without the throughput operation interfering with the transactional workload. So how are we going to approach this? The general plan is to isolate the different tasks that make up. So we want to be able to say about every piece of code and every IO that goes to this or to the network, whether it belongs to an OLTP or a real-time operation, or whether it belongs to an analytics or maintenance operation. So the first step is to identify those tasks and tag them in a way that allows us to sort them out later. And the second step is to have a scheduler that picks which tasks to execute and when to execute them. And if we're able to do this, then we're able to prevent the analytics operations from interfering with the real-time queries. So let's see how we do that. But before that, we'll show how to achieve the throughput that we want and later how to adapt this to this mixed latency and throughput workloads. So in modern machines, there are lots of a large number of cores. So with the large R machines today, you can see 128 cores on the same server. And there is a large penalty to try to coordinate work across those many cores. So this means atomic operations or locks and you have cache line bouncing and just selecting which core will be the one to execute the task. All of that itself creates a large penalty. So we would like to avoid it. And the way to avoid it is to recognize that the distributed database already spreads the data across nodes. So we're already able to divide the data amongst the cluster into individual nodes. So we're just going to extend this and do this for one other level and also distributed data amongst the shards among cores. So each core becomes the owner of a particular subset of the data. And we just route the work that is relating to a particular bit of data to the cores that owns it. So compute and storage are co-located. And we've built the CSTAR framework, which is a C++, the open source framework that helps doing that. It's in use by several projects. It can sell a DB, of course, and I can also mention the vectorized IO, which is a streaming framework compatible with Kafka and the Ceph distributed file system by Red Hat and a few others. So this is built exactly for this sort of cluster operations. So the idea about chart per core is that the individual cores don't share data with each other. And so they don't block each other. They don't need the locks when accessing the data because there is just one core that can access them. And with a single threaded operation, there can be no contention. So it's similar to the image on the right of each puppy eating from its own core. By the way, I didn't mention about the questions. So you can put your questions in the Q&A box if you have any. So far, I haven't seen any questions. I'm happy to stop and answer questions as they pop up. So here we also see a comparison between a traditional threaded applications and the C-star sharded stack. So in a traditional application, you have many threads and the threads are multiplexed onto cores by the scheduler. And this immediately presents a problem of how to do this multiplexing. If you have a large number of threads, this is good for throughput because it means that every core will have at least one thread to run and so we can saturate the machine. But it also means that you will not be able to guarantee that there are free cycles left for your latency-based computing. And if you have a small number of threads, then that's great for latency, but your throughput will be limited because you will not be able to utilize all of your cores. So it's kind of hard to find the perfect fit. And of course, it's always the virus with the workload itself. With C-star, we have exactly one thread per core and we run the same database stack on each core. And those stacks communicate with each other with point-to-point queues. So instead of taking a lock in order to access the shared memory, instead the individual cores send messages to each other via queues and they can proceed with some other work until the response comes back via the response queue. So this is a cooperative model where instead of taking locks, the individual tasks wait for each other at predefined points in order to check for completion. So let's see how we make latency and throughput behave nicely with each other for CPU workloads. This is the easier part. The second part will be IO, which will be a little bit more difficult. So remember, we wanted to isolate the task and then schedule them. So the traditional model where you isolate the task in a thread, then every task, say a request from a web request, becomes a thread. And often you borrow it from a thread pool and you let the kernel decide which thread comes first. And you can try to influence the kernel choices by raising or reducing the thread priority. So the advantages of that are that it's well understood and it has a huge ecosystem. And although you might think from the size of the disadvantage list that I'm a little bit biased and I am, those advantages are really very important and they're well worth considering. So unless you have a very specialized application, it's really good to go down the well trodden path and suffer the disadvantages. But if you are writing a high throughput application, then it's also worth to consider the disadvantages. So context switches that arise from packing operations to thread, they're pretty expensive and they're actually getting more expensive because of things like spectra and meltdown mitigations. Telling the priority to the operating system is not that easy. The priority levels are not meaningful. So you cannot predict what a particular priority level will, what it will result in in terms of response time. Locking, when you have a large number of threads, it becomes very complicated and very expensive. So locking eats into your compute budget. It's possible to have a priority inversion where a low priority task is holding a lock that is needed by a high priority task and blocking its progress. And the kernel does its scheduling on its own granularity and it may be inducing latency in this way. So what we chose is to do a task isolation in an application level. And here instead of a thread, every operation is just a normal object with a function pointer that tells us what's the operation that is needed to do. And the operations are multiplex on our thread per core architecture. So if you have a machine with, I don't know, 30 cores, then you will have 30 threads, each executing one task at a time. But you can alternate between throughput and latency tasks. And this is the key. So here you have the choice whether to execute a latency-sensitive task. And after you've run out of a latency-sensitive task, you can use the remaining spare cycles to run throughput-oriented tasks. And you have the concurrency framework, which is CSTAR in our case, that does this assignment of tasks to thread and controlling the order crucially. So what are the advantages and disadvantages here? So one advantage is that you have a full control. And that means that if you identify any problem, you can go ahead and fix it. But you'll notice I also listed as a disadvantage. So full control also means that you are responsible for everything. And there's many more bugs to chase down and strange behaviors. So it takes more time to mature such a system compared to the traditional system. It has very low overhead. So the scheduling is cooperative. So you never need to take any locks over form atomic operations. And the CPU affinity is wonderful.  And then the kernel is less involved. So the kernel, which is a big and complicated beast, will give you fewer surprises to your application. So this is how it looks like.  And they're placed into task queues. And remember, we've identified every task. We've tagged it in a way which identifies whether it is a latent incentive task or a throughput or in the task. So we can sort them into individual queues. And each queue has its own priority class. And so the scheduler can tell what kind of tasks are waiting to be scheduled and for each task queue what its priority is. This is the key to the whole thing. And the way the execution goes is that the scheduler will pick a task queue and will pick some task from that task queue and keep executing those tasks until one of two things happen. One is that the scheduler runs out of tasks in that task queue. And the other is that a timer tick happens. And our timer tick is every half a millisecond. So in this way, we ensure good locality. So it's important to execute similar tasks back to back so that the CPU harder mechanisms like the instruction cache and branch prediction work well. But also to not let the one task queue monopolize the CPU by preempting it when needed. So the scheduler will alternate between task queues, pick a bunch of tasks. You can have a bunch of small tasks running within a time slice. Or you can have one large task that's occupying the entire time slice. So when do we switch queue? One option is when the queue is exhausted. And this is common for your real-time operations. You have a bunch of queries that appeared on the network. And you start processing them. And when you've done, you switch over and do something else. And for the throughput-oriented jobs, those are large jobs that take many seconds. And therefore they're being preempted. So you start a task. You see that it took more than half a millisecond. So you stop it and move on to the next task queue. Every time you switch between task queues, you also poll for IO. So you check if you have a new task by looking for network events or for IO completions from the disk. And at that time, you make a scheduling decision, which is what is the next queue from which I will pick my task. And your goal is to keep the runtime equal across the queues, but weighted by the number of shares that we assign to each queue. So if a queue has a large number of shares, it will get proportionately more runtime than a queue that has a small number of shares. So it's not the wrong robin. And this allows us to give higher priority to our real-time tasks and lower priority to our throughput-oriented tasks. So how do we preempt those tasks? One option is to read the clock at the head of every loop and compare it to time slice end. That's incredibly expensive, so we don't do that. Another option is to ask the kernel to send a signal whenever every half millisecond. And this works. It's a little bit problematic on large machines because of the way that signal locking works, but it does work. And the way that we do is we use a kernel timer to write to memory location, and then we just call that memory location to see if it ever changed. And there are nice techniques involving IOU ring that allows you to do that. It's a little bit tricky, but also very efficient. When you do something like that, you're completely in control, and that also gives us the ability to create problems for yourself. And that is when you have a complex computation that doesn't check the preemption mechanism. And so we have a stall detector, which is a signal-based mechanism that logs an entry whenever it detects that a task is not preempted in time. And we use that in order to detect problem errors in the code and fix them. So that was a part about the CPU. Let's look at IOU, which is in some ways similar. So the goals are similar, but the details are quite different. So again, we want to isolate the tasks that we have to see which IOUs are part of latency sensitive operations and which IOUs are part of our throughput-oriented computations. And we want to schedule those IOUs at the time that we want. So IOUs are similar to identify. Every time you issue a disk read or disk write, you know that you're doing it and you can easily tag this IOU with some kind of markers that tells you whether it's part of a throughput-oriented operation or a real-time operation. And there are just four types. You have random reads, random writes, and sequential reads and writes. But in practical terms, it is much more complicated. So first, those disks are physical devices. They are not those cores that are more just machines that execute instructions. Instead, their behavior changes with time. So if you're talking about hard disks, they have heads that move and you need to take into account the time that it takes the head to move. And even solid state drives, which appear to be more like RAM, they also have strange behavior.  So they're physical beings with more complicated operation. And it keeps changing both with time and also depending on your deployments. So different disks can behave very differently. So let's compare CPU to IOU. So on a CPU, tasks are homogeneous. You have basically a pointer to a function and you execute that function. But with IOU, the tasks are wildly different. So they can be small reads that require disk six, or they can be large sequential writes. And the disks have very different limits to different types of IOUs. With a CPU, you can have each core schedule its own tasks. So there is no coordination penalty. But with a disk, you can do that. You have usually fewer disks than you have core. So you need to share this among cores. And that means you need to do coordination. The capacity of a core, you know it in advance. So you know that a core can give you one CPU second every second. But the disk performance depends on the workload. And of course, you're running multiple workloads at the same time. So it's hard to predict the disk performance. And with a core, it will run one task at a time. Even if you're running threads, at any particular time, a core is running just one thread. But disks, they need multiple requests. Otherwise, you will not be able to utilize them. So disks are internally are parallel machines. And so they require concurrency in order to operate to their full capacity. So one challenge that we can solve about cross core coordination is using leases. So we can have each disk virtually lease out some of its capacity. So let's say a disk can do 100,000 operations per second. And we have 10 cores. So we can lease out a few operations at a time to every core. And this way, we can achieve sharing of the disk capacity among the cores without static partitioning, which is where every core gets exactly one tenth of the capacity. And so we leave some capacity unused if it's not every core claims its capacity. So it's an ability to do dynamic sharing without oversubscribing the disk. So one thing we need to do is to decide on how many requests we can feed the disk. And let's limit the discussion to an SSD, because that's what most people use these days. So usually you have four different parameters that describe the disk. You have the read throughput and the write throughput in megabytes per second, usually two different numbers. And you have the read operations per second and write operations per second. Again, two very different numbers. So overall, four parameters. And of course, the larger the larger those parameters, the better your disk. But the story doesn't end well. So it doesn't isn't so simple. So this chart demonstrates how the disk behaves when you mix and match different workloads. So on the x-axis, we have a write workload that starts from zero all the way up to the maximum capacity of the disk. And on the y-axis, we have a read workload that starts from zero IOPS all the way to the maximum IOPS that the disk can support. And in the metrics, you can see how the disk behaves with each combination of workloads. So on the bottom left, you're pushing low workloads on both the right and the read, and on the top right, we're pushing a high read workload in parallel with the high write workload. And you can see that the disk is not full-duplex. It cannot process both workloads currently. There is a region in which it will simply not be able to sustain the workload. There is a region where it will work well. And there is some kind of gray area where it sort of works, but the latency starts to shoot high. And our goal is to stay off this gray area. And that's what our scheduler should do. It should schedule just enough requests to keep within the good zone. So let's see how this is implemented in CELADB. And in CSTAR, actually, most of the code lives. This is a quick reminder of what CELADB is. So the scheduler has two jobs. The first is whether it has room to admit a new task. So for the case of IO, if the scheduler admits a new task, will that new IO cause a disk to go over the limit and start incurring high latency? Or whether the disk has sufficient capacity and it can accept the new task, the new IO without a problem? And once we've answered the first question, the second one is of all of the IOs that we have pending, which I should admit. And the same goes for CPU.  We first need to decide whether we want to admit a new task to the CPU. Here, it's easy. If the CPU is ideal, then we should admit a new task. And again, the second question is also the same. Which of the tasks that are rating should I admit? And this is the basic structure of the scheduler. For each queue of tasks, we assign shares. So every workload is characterized by the number of shares that it has. A higher number of shares means that we will accept more tasks from that queue. And the scheduler alternates between picking the task, dispatching and up to the resource that is being controlled. And the resource can be the disk or CPU. And we get the results from that and continue and move on to the next task. And this is the key to how to limit the impact of the throughput-oriented task on latency. We simply don't admit a throughput task if there will be an impact on latency. So how do we assign those shares? There are two ways to do that. So the first is to have an internal controller that selects the number of shares dynamically. And this is mostly for internal maintenance tasks where the user does not have the ability to or the desire to tune everything. They want to spend their time elsewhere. So you want to have the system automatically determine the correct number of shares that are needed to accomplish the maintenance task, say streaming to a new node, but without affecting the throughput loads. So the way this works, we have the various queues. In our case, we have the commit log and query queues. Those represent the real-time queries that come from users and commit log represent the rights. And we have the various other queues which are used for maintenance tasks. And the scheduler is balancing between them. So compaction is one of the important maintenance tasks which is trying to balance reads and writes. And in order to decide on the right number of shares for the compaction task, we monitor the backlog that the compaction has. So if compaction is falling behind, we will increase its shares. And so we will increase the amount of resources that it takes from the CPU and disk. And this will allow it to reduce its backlog. And on the other hand, if we see that the backlog is falling, it means that we are making progress and we can reduce the number of shares again and allow the user tasks of serving queries and writing data to have a larger share and receive a lower latency. The same we have with memory. So CDDB accumulates writes in memory. And whenever memory gets full, it starts flushing those writes to disk. This is a very efficient way of performing writes because you only need to access a disk sequentially as opposed to randomly, which is the way that it happened with traditional B3 storage formats. But if you run out of free memory, then you will end up not being able to serve any writes at all. So the way we do that is we monitor the amount of free memory that we have. And if we see that we're starting to run low, we initiate a flush and we assign a number of shares to the flush that allows us to keep accepting new writes. So we ensure that we flush memory to disk at the same rate that we have incoming writes. And so we dynamically balance between the rate of the disk flush with the incoming rate. And so we're not flushing too fast, which would be a waste of resources or too slow, which would cause us to not have the ability to accept new writes if we run out of memory. So we can also do the same thing with different user workloads. And we do that by letting the user assign shares to different query queues. So say you have a real-time workload, let's call that query one. And then analytics workload, let's call that query two. And they're running in parallel, but you would like the analytics workload not to interfere with the real-time workload. So you can assign the priority, different priorities to query one and query two. And by having a higher number of shares for the real-time workload, you ensure that the analytics workload doesn't interfere with it. It can still make progress, but it will not cause the latency to increase when it starts using up resources. It will basically only use spare resources left over from the real-time workload. And we have SQL commands that allow you to adjust the number of shares for different workloads. So it works on the session level. Basically, every session that connects to the database is really using a separate queue at the back end. And that's it from me, and I'm happy to take questions if there are any. I think I see a question. So how is this being used in real-world applications? So one example that we have is, I think I mentioned it, is Spark versus real-time workloads. So many companies like to use Spark for analytics, but Spark can gobble up a large amount of data. And if you aren't careful and you don't use something like workload prioritizations, then you end up having the Spark workload dominate over your real-time workload. And this can cause a disruption. And with this system, you can run the Spark workload just on the spare capacity of the system. And I see another question. So I'll read the question. I think the scheduler operates on supervised machine learning in feedback. So it's not exactly supervised machine learning. We use the really simple proportional controller algorithm. I think it would make a good study to see if machine learning can improve on it. I'm not a machine learning expert, so we didn't really try machine learning. But certainly, with machine learning, you could learn the characteristics of the disk in real-time. And so avoid having to measure the parameters of the disk ahead of time. So certainly, it would make a very interesting project. We didn't do that yet, but I agree that there's room for investigation here. I would love to have more knowledge in machine learning in order to know how to do that. Okay. I see another question. So how many different workloads can you reasonably prioritize? So the number is a handful. We don't really see lots of cases that demand more than that. I guess microservices applications can benefit from having a very large number of workloads that operate concurrently on the same database. We did not reach that level yet. So if you have five or eight workloads, then the system can deal with them. But if you have many more, then it just becomes just selecting between so many queues, you cannot reach a good decision at all times. So five to eight is what you can reasonably be expected to do. Do we have time for more? Let me check the time. So I see it's a question if Paul did say to switch to using IOU ring from AIO. So I mentioned IOU ring for because it's just a hot topic. In reality, we're still using Linux AIO. It performs just as well or maybe it's a little bit less performant. But for our purposes, it's fine. We will eventually switch to IOU ring since it's such a popular API. One more question. Is there a need for a separation of internode via intranode level shard replica configuration? I asked because I think you mentioned the intent to avoid configuration as much as possible. So the intranode configuration is completely automatic. When the system is installed, it detects the number of shards and it divides the data equally among the shards. It is possible to override some of the decisions, but there's really very little that you need to do there. It's mostly automatic. You don't really have intranode configuration. So all of the configuration is at the node level and above. And usually all of the node level configuration is equivalent and you manage it with a configuration management tool like Ansible or Kubernetes. So all of the configuration is handled at the higher level. Okay. And I think we've exhausted our time. So thanks everyone for attending. And you can always ask questions on our mailing list or on Twitter. Follow me on Twitter. And thanks again. Bye-bye. Thank you so much, Avi, for your time today. And thank you everyone for joining us. Just a quick reminder that this recording will be posted to the Linux Foundation's YouTube page later today. All right. Have a good one, everyone. Thank you.


Hey everybody, we're live this Friday afternoon from Boulder, Colorado, live here with you and I'm here to answer your questions. It's one of my favorite times of the month and I've already got a few questions that came in beforehand from patients and other fans and I'm going to just get the screen here so that I can see your feed. So if you just give me a moment. Interestingly enough, I have a funny story. We've had wildfires starting already. It's so dry there's a drought here in Colorado. So we desperately need the rain and it's supposed to rain this weekend which is wonderful. So I was at the coffee shop earlier which is where I love to write and work and do things and I got caught in the biggest downpour. I don't remember ever being in such a downpour and of course I had to get back home for an interview and also for this live Q&A. So I walked out and if I look a little bit like a drowned rat, I got completely soaked, hailed on and then I drove home at 10 miles an hour with windshield wipers going but I was so grateful for the rain because we desperately need it. So that's where I just came from. It was quite an adventure getting home to this Q&A but it was fun and I'm so glad for the rain. Okay so I'm just getting to the place where I can see your questions and answers and things pop in and tell me where you're from. If you're listening I would love to see y'all say hello as I see you guys in the feed and like I said I've got some questions and answers to start with. One of my patients had asked a question about leaky gut. So I think that's a great place to start today and gosh first of all how many of you out there have been told you have leaky gut or have symptoms of leaky gut? Let's talk just a little bit about what is leaky gut? What does this mean? Is it real? How do you heal it? Hey Taylor, hey Jennifer, hey Michelle, awesome start to Amanda. Oh my gosh hello everybody it's so great to start to see your hygiene from Iowa and awesome. Hey Marcia from Ohio, hey Tony from Boston, Mandy from Ontario. Awesome to see all you guys on today. So leaky gut. So basically what happens is we have these enterocytes that line the gut. These are the cells that line the gut and they are about one cell layer thick. They're like tiles on your bathroom wall and in between those tiles just like if it was on your bathroom wall there's grout. The grout is the tight junctions that keep things that should stay in the gut lumen in the gut lumen and keep it out of the immune system because between this so we have gut lumen that lines you know where the food goes from your mouth down to your bottom and then you have this one cell layer that is between the gut lumen and the bloodstream and that one cell layer is thin because you need to diffuse nutrients and get nutrition through that cell layer so really really important. However if there is toxic exposure like mold chemicals in your environment phthalates, parabens, BPA, etc in your food supply. If there's gluten and you're sensitive to gluten whether it's celiac or non-celiac gluten sensitivity or even if you're just a healthy regular person all people have some degree of increased permeability after a meal containing gluten because gluten happens to be a trigger to the little trap door that opens and closes the cellular junctions called zonulin. So that's one reason why you've probably heard me talk about before if you have autoimmunity or immune inflammation or leaky gut generally in my clinic at least I will take you off gluten temporarily sometimes permanently even if you don't have celiac disease because it decreases that inflammatory load on the immune system. So the intestinal permeability is in the medical literature that's a more technical term for leaky gut. In the late terms we call it leaky gut because it kind of describes what's happening but what happens here and again it's super prevalent because of our toxic load and the things that are harming our endothelial cells all of a sudden when we eat a meal it's called post-prandial or after we eat we have this leakage of food contents like corn antigen or peanut antigen or whatever we're eating and those antigens of the food maybe partially digested will go through between the cells where the tight junctions aren't doing their job and there's hyper permeability and they'll leak right into the immune system which is the blood and how we diffuse nutrients. So what happens in that immune system is we have Pac-Man that are called HLA dendritic cells this is part of our immune system that's always sampling so that HLA system is basically trying to protect us from things like parasites or bacteria in our food or salmonella or viruses which even like COVID can act in the gut. So what happens is if we get exposure to some infection our body will react appropriately and try to create antibodies to that virus or bacteria or parasite but unfortunately what can happen is if there's incredible increased permeability or leaky gut because of immune inflammation mold exposure toxic exposure poor diet stress etc those tight junctions become less tight food leaks in immune system gets irritable or irritated I always think of it like poking a bear and so this immune system then starts to overreact to the antigens from food which they're just food they're not bad guys but this can start an inflammatory cascade and we can see this manifest all over the body because as the immune system starts to overreact and create antibodies to these food antigens that are coming through between like where the grout should be between our cells then this creates a more inflammatory load on the immune system more cytokines are produced and the cytokine inflammation is what can cause systemic symptoms like brain fog or fatigue or joint pain or autoimmunity like thyroiditis or rheumatoid arthritis or multiple sclerosis or any number of things that are inflammatory in nature and often this gut immune interface where I'm talking about where leaky gut happens this is where the start of auto immunity manifests because this is our interface with the world that gut lumen is our way to interface with the outside world so hopefully that explains a little bit about what is leaky gut why it's so much more prevalent and why eating a low antigenic diet which would be like an elimination diet the common foods that I have people eliminate sugar dairy gluten are the top three if I have to pick just one it's gluten if I have to pick three it's gluten dairy sugar and then there's some more common diets that are more like seven or eight antigens they're called elimination diets a whole 30 has been a way that's popularized these elimination diets and typically those will eliminate dairy egg gluten corn soy sugar alcohol sometimes peanut because those tend to be the top inflammatory foods so if you're out there you think you might have leaky gut you've been dealing with leaky gut you probably are already on somewhat a restricted diet but it can be very important in the healing process to take out those antigenic foods temporarily while you heal so that's just a little background on leaky gut and the patient's question that had asked about this is how do you know when you're healed how do you know when you no longer have leaky gut well let me tell you from experience I 20 years ago now was diagnosed with breast cancer totally overcame that but through that breast cancer experience I had chemotherapeutic drugs to treat the cancer three drugs for six weeks six cycles and one of those chemotherapeutic drugs was particularly hard on the gut it was called cytoxin and that drug created a more permeable gut and then six months after I was finished with chemo finished with cancer I got diagnosed with Crohn's disease now what's interesting about that is I didn't know it but I also had silent or latent celiac disease where I was creating an inflammatory response to gluten and damaging the um villi of the gut that line the gut to create an absorptive surface so those villi were becoming damaged and I didn't even know it and gluten was contributing to that so unbonostomy I had celiac that was undiagnosed and then I had these chemotherapeutic agents and pretty heavy-duty toxic therapy that created more permeability and then I also had a genetic predisposition called NOD2 and that makes me more prone to Crohn's and colitis basically an abnormal immune response to normal microbiome so this was the perfect storm for me to be diagnosed um several months after the cancer was done with treatment um with Crohn's disease so what happened was I had to dive in and figure out how to treat my Crohn's disease I'm completely free of it now a lot of people don't believe it they're like well you must be in remission I'm not only in remission I am cured I don't have any sort of signs and symptoms for the last probably 16 or 17 years of Crohn's disease now I just tell you that story to give you a framework because all of that is a way to understand the gut immune interface and understanding how I treated the Crohn's disease and how I healed my own gut is part of this healing leaky gut because I was the perfect poster child I was like a guinea pig and I had to figure it out for myself so I did take out those antigenic foods and I've actually remained on a low antigenic diet I'm grain-free egg-free dairy-free gluten-free I do a fairly low histamine diet I don't eat a lot of tomato potato some of the nightshades but what happens is when I eat very clean like that with a low antigenic diet I don't have any symptoms I've got dysfunction and my Crohn's is gone so often when you're trying to heal your own leaky gut taking out those foods is a first step and then the second steps that you want to do it are looking at the microbiome so this is where a great functional medicine doctor can help you because they can look at organic acid testing or stool testing or small bowel intestinal overgrowth bacterial overgrowth like a breath test a lactulose test where they will see if there is manifestation of hydrogen or methane in your breath because of overgrowth of bacteria in your gut they a doctor can also do testing for yeast overgrowth they can do blood work for antibodies they can do organic acids which are markers in the urine that show yeast or they could do stool testing and any of those three that are positive could indicate a yeast overgrowth as well so we have not only bacterial overgrowth we have fungal overgrowth some people have parasites I see this a lot if you've traveled to foreign countries if you've had food poisoning if you eat a lot of raw foods or you go camping hiking swimming in streams or you know mountain lakes or things where there could be giardia or cryptospridia or some of these other bugs that live in freshwater places so all of those things can contribute to leaky gut and when I'm looking at a person with leaky gut which is very common what I first want to do is go to find if there's any infection or overgrowth or bacteria or fungus because I'm not going to be able to heal that leaky gut until I go deeper and try to find the root cause and the root cause is often related to an infection or a toxin or an overgrowth of bacteria or yeast so that's where you start once you get that overgrowth of bacteria or yeast taken care of then you can start using things like glutamine bovine immune globulins zinc carnicine nutrients like vitamin A and vitamin D all those are critical essential fatty acids sometimes gamma linoleic acid all of these things are critical to start to heal the gut and then there's probiotics probiotics there's a whole bunch of them out there there's lots of evidence on spore probiotics I'm especially fond of them things like bacillus subtilus bacillus coagulans and then combination products mega spores one of my favorites but all of these products can be really really helpful and especially when used in conjunction with colostrum or bovine immune globulins or glutamine palette powder or aloe or zinc carnicine and then the patient's question which I asked a few minutes ago how do you know when the leaky gut is healed well one of the things that people come in with is this where they keep reacting to more and more foods and you've probably seen this or maybe you're experiencing this or your box of foods that you can eat just keeps getting smaller anyone out there raising your hand you can sure comment if you want but a lot of people feel like they have less and less ability to eat foods and they're getting more and more restrictions that my dear is a leaky gut that's part of that and it's also toxic load so your toxic environmental load which could be contributing to leaky gut all of this is creating a fact that your immune system is more reactive and you're less able to eat freely I never like to keep patients there I don't like to make their box smaller now once in a while temporarily we will take out some antigenic foods or we'll test them and if you've done with your doctor a test for IgG food sensitivities those are systemic antibodies and what happens is you really shouldn't be creating systemic antibodies to food so what that means is you've got some degree of permeability happening if your IgG thanks for the raised hand Amanda I know you guys out there understand this um so basically when you have permeability those IgGs to food start to develop because of the thing I described earlier which is this transfer between the cells of food antigens and then those IgGs you can measure in the blood so if I do a food antigen profile like 96 or 144 or 200 foods and I see them light up like a Christmas tree where there's tons and tons of food allergies that's pretty much a guarantee that there's intestinal permeability now it's important because sometimes you see those food antibody tests and you're like oh my gosh I'm allergic to everything there's like four foods I can eat raise your hand again you know metaphorically or virtually because you probably have been there or know someone who has where you have all these food allergies the issue there is not that you want to eliminate all those foods some of the big ones yes like the top seven that I mentioned earlier dairy egg gluten soy corn sugar alcohol peanut however what this means is there's intestinal permeability and because there's like these gut these cells are so leaky that you're getting antigens in there and you continue to react to those foods the problem is not the solution is not just taking out more and more foods the solution is actually getting to the root cause getting to the toxic load the mold exposure the chronic infection the overgrowth of bacteria the overgrowth of yeast the parasites the low stomach acid the low pancreatic enzymes any of these things the low short chain fatty acids any of these things can contribute to that permeability so you really have to go to the root now like I said back to the patient's question was how long does it take to heal or how do I know when I'm healed this is tricky because like for me I'm 20 years out I'm completely healed from Crohn's I will probably always have more permeability than someone who's never been through what I've been through so for example I still eat a fairly restricted diet now it's much much less restricted than it was 10 or 20 years ago but I still choose to eat a very clean low antigenic diet because I feel better and then I still choose to take vitamin A and vitamin D sometimes glutamine lots of other nutrients for the gut because I want to continue to restore that so those of you who have had leaky gut you might always be prone to some degree of permeability and you can push the boundaries but you might find like me if I drink too much alcohol which I pretty much don't drink at all or if I eat the wrong foods I could still have symptoms at times and so it's it's important to find that balance but how would you know is when you can have more variety in your diet and you have no symptoms you have no dysbiosis your digestion is good you have normal form stools and you feel great good energy no brain fog that'd be the the ultimate end goal okay that was a lot on leaky gut but I think it's so important I hope that was helpful for all of you I'm going to go through and look at questions now and see what you guys are wanting to know hi from Ben Coover hello everybody if I didn't say hello to Asheville hi Adam Joseph from New Jersey hello hello so forgive me if I'm missing any of you it's awesome to have you here and listening and I'm just going to kind of randomly pick out a few questions what can a person do to help after vaccine so I feel like I'm pretty neutral on this but they're definitely whether it's the spike proteins from COVID itself in the long haul or spike proteins from the vaccination they can be inflammatory triggers temporarily and what I'm recommending at this point is calming the cytokines through things like Boswellia, Chinese skullcap, B-propylous, n-acetylcystine, Corsitin, vitamin C all of these things can be really supportive for the immune system so that's a good way to support your immune system after you've been vaccinated. Tony says piggybacking on previous interview about immune resilience, mold, Lyme, etc. bigger issues now from modern-day toxicity so Tony's referring to I just did if you didn't see it I did a great interview with Dr. Eric Lundquist and it's really great you can go back and watch that it was just the hour before this such an expert and brought so many good points there and we were talking about how there's more prevalence of immune dysfunction and chronic infection and things because of the toxic load so Tony's question is is this turning out to be true with COVID long haulers? Yes yes yes yes and that's why like for those of us who've done functional medicine and kind of chronic infections and toxins the long haul stuff is no surprise not at all because we've been doing this for CMB which is cytomegaly virus, Epstein bar, coxecuviruses, all of these other viruses can cause basically what you could call a long haul symptom where they reactivate or cause immune dysfunction it's not really new now COVID is a novel new virus so we're seeing more of it related to this but the the mechanisms of what's happening from toxic load weakened immune system and chronic activation of the immune system is not really a new concept and so we kind of know already how to treat this there are things that are antiviral that can be helpful there's anti-inflammatory things like I said things that decrease cytokine so Boswellia curcumin, Corsetin, B-propylous, Chinese skullcap and many many others these are all really helpful at calming the immune response one particular product I love is are it's called cytoblox I'll be sure and I'll link that there it's an amazing combination of Chinese skullcap B-propylous and turmeric so I'm going to find that and link that up for you right now because I've really been recommending that a lot for inflammation that people are suffering from because it's got a great combination the Chinese skullcap in particular is super helpful for mast cell so the mast cell activation and so I'm always recommending that and if you're seeing me looking around I'm trying to find the link for you here so I can put that in there okay any Mandy just ask about sugars so I think I'd mention in the elimination diet cane sugar is particularly inflammatory if you do need to substitute I'm a huge fan of organic natural stevia it's a plant that can actually be antimicrobial to dysbiosis or even for lime monk fruit coconut palm sugar and some of these alternatives are a little bit lower glycemic and lower inflammation so if I do use even natural honey that's local from wildflowers can be helpful as well just use it in moderation because any sort of sugar is going to feed if you have yeast overgrowth or certain types of bacteria and taube yes we have so much crap today you're right our food supply is so contaminated it's a lot of the food has additives and things and those things actually do glyphosate for example which is round up when it's sprayed on foods and gets into our gut it actually affects not only our microbiome it preferentially kills lactobacillus which is one of our good probiotics and causes things like clostridia which is a problem if it overgrows to proliferate so it can really disturb the balance of the microbiome and it can keel eat minerals in the gut which are critical for our own function and for the function of the microbiome so any sort of food that's non-organic and sprayed with glyphosate can affect our gut very determinedly hi genie hi mycophanolic acid showing up oh gosh so mycophanolic is a mycotoxin and is particularly harmful for the immune system so this one in particular when I see it it can be assisted with aspergillus or penicillin or some of the other molds but the bigger issue is mycophanolic acid is used in cell sept and some of the immunosuppressive drugs and so it's used to actually create immune suppressive drugs so it does suppress the immune system so patients who are colonized with mycophanolic acid often have a little suppression of immune system they might have more infections or viral load or they might have more yeast infections as well so thanks for asking that genie as far as what to take for that I would recommend basic clay charcoal I'm a huge fan of GID talks I'll include a link to that as well and also just plain old charcoal those are all super helpful there's a bind aid that we have that's a glycomanin and that's a really nice gentle one if you're sensitive to binders it's called bind aid like I said I'm going to actually link that up right now they can find it easily for you the GID talks the charcoal bind aid all these guys are really good and I always like using a combination of binders because sometimes they have different affinities so when you combine binders if you can tolerate them you're getting more activity for more types of mold and toxins so those are super helpful okay let's see what else we have here Tony Mandy sugars we talked about genie we talked about that day in the life of Jill's diet I always find these questions funny because I'm like you know I do my thing personally for me and it doesn't necessarily mean it's the right thing for you but I will tell you my day in the life of my diet and what's funny is the difficulty is if you're someone who likes variety I just talked to a friend who's like has to have a new food every single day every single meal I'm like well I probably couldn't survive because I do tend to eat some of the same stuff because I am somewhat restricted now first thing is so important I have really learned to accept this like I love the diet I love the foods that I can eat I don't miss anything I mean granted cheesecake that was really good pizza that was really good but it's not like I'm routinely craving or missing those foods so it's kind of nice if you can get to the point where you accept what your limitations are for the time being and learn to enjoy those foods and I really feel like the things that I don't eat I don't really miss I really love the foods that I eat so fruits and vegetables pretty much all fruits and vegetables I love and I'm not super restricted unless it's a high histamine I don't do tomatoes I don't do potatoes white potatoes I actually don't do a lot of sweet potatoes or starchy vegetables either I do a more low starch diet but breakfast is typically like a grain-free cereal some of the great brands out there are lark ellen farms purely elizabeth which is a local boulder company and there's many more but I love nuts and seeds a kind of a rich high calorie I'll often use a coconut an organic coconut fermented yogurt now if your histamine issues sometimes those yogurts can be a little bit tricky I have found no problem colina so delicious brand there is a koyo there's a bunch of great brands out there I have no affiliation with these brands but I know a lot of you're like where do I get this what do I eat so I'm trying to tell you specific brands for that purpose I love unsweetened coconut milk on there too so what I'll do is I'll do a grain-free granola pour on some fresh organic berries and then add a little scoop of coconut yogurt and then add in sweet and coconut milk that's usually my breakfast an alternative that would be a smoothie with lots of leafy greens maybe coconut milk I often add a scoop of collagen powder our um it's called collagen boost that we have in our retail store love this it's got three patented brands of collagen super helpful for hair skin and nails and anyway good comments thank you on my skin um part of it I think is I use collagen every single day I'm going to share the product that I like it's called collagen boost but you can use any good collagen product as well but I actually put a scoop of that in my grain-free granola so every morning I have that I also I don't drink near as much coffee as I used to I think coffee can be a very good antioxidant if it's clean and um good quality my favorite brand is purity so that's a really good tested for mycotoxins and pesticides and all of that bulletproof is another great brand and often if I do drink a cup of coffee I will put a collagen creamer from vital proteins in there so delicious you can make your own latte my recipe for that is um stevia organic stevia one scoop of vital proteins collagen creamer which I'm going to link up here in just a second and then um a little bit of cinnamon love cinnamon in my coffee so the coffee the breakfast um the alternative breakfast like I said would be leafy greens all kinds of varieties there maybe a little coconut or almond milk collagen powder you could put fresh turmeric fresh ginger in there partially is really good for detox if you like cilantro and it doesn't overpower it with that soapy taste and then I often will add chia flax or hemp for some fiber and usually some frozen berries like blueberries strawberries raspberries are a combination if you want a little sweetener I will add stevia and that makes a great breakfast or snack lunches and dinners are typically leafy greens and sometimes a little chicken or fish sometimes I just do nuts and seeds I don't always have meat with that um and then other things would be like roasted vegetables are some of my favorite with either coconut oil or olive oil or you can do um you know baked chicken I love wild salmon I love trout some of the smaller white fish low mercury for sure um if you're doing salmon I would recommend you do wild coho sockeye or king and do not touch the farm salmon it's one of the most toxic foods on the planet um so that's where I I go with foods that's kind of it in a nutshell okay let's go back to your questions here um Mary Kay recently saw some information on endocrine disruption from stevia um so I have not seen issues with stevia but the key is this a lot of the commercial brands contain other things so they might be combined with splendor they might be combined with urethritol so what I try to find is a pure stevia extract either powdered or tincture mine is alcohol free um and it is um just pure stevia extract so that's really part of the important thing I have not seen endocrine disruption in Mary Kay if you want to share anything on that I am happy to look and comment on that because it could be something that's new that I don't know about yet um but I have not seen any issues with endocrine disruption on pure stevia okay um Talb you've got a real specific question on the neutraval um I would have to look that up because that is a very specific amino acid I will try to come back and answer that for you um but right now I don't want to go to find a neutraval and find that specific amino acid okay Talb asked I missed it what did you say for good substitute for sugar um monk fruit is the low glycemic and coconut palm sugar and of course stevia all of those are fairly low glycemic and uh well tolerated natural honey or maple syrup can also be used and again just use it in moderation I'm not a fan of cane sugars that's the one I usually have people totally avoid and certainly aspartame or um splenda sucralose are not advised at all um okay I think I'll do another question or two and then we'll wrap up today this is always so fun um feel like I'm with old friends uh let's see Michelle asked about three days after gallbladder removal chronic inflammation and pain all over now only able to eat a handful foods a SIBO and H pylori positive okay so let's talk about gallbladder you've got a whole bunch of symptoms there and I'm so sorry you're suffering um Michelle so gallbladder is the storage container for bile bile is our storage for both cholesterol and toxins like mycotoxins and toxins from other things and it also as we excrete bile from the gallbladder into the small bowel it helps to sterilize the bowel so that we don't get bacterial overgrowth so it's no surprise that in your question you said you know I have my gallbladder was out things have never been the same sense and I have SIBO and H pylori because there is a connection now when you don't have a gallbladder all that is is the storage bag for your bile it doesn't mean that you don't still have bile but the bile now without that storage facility it just drips drip drip drip so because of that you're not having a bolus of bile with meals to help emulsify the fats so you can tend to have more loose stools or trouble with your bowels or trouble with fatty foods because you don't have that bolus of bile helping to emulsify fats with your meals instead you're just dripping and between meals that bile acid can cause diarrhea or loose stools or symptoms or burning or pain but you mentioned you have these infections and it's kind of no surprise because of the bile function isn't adequate then you're going to be prone to overgrowth so it's real common even if you still have your gallbladder to have dysfunctional bile acid so what could we do about that now if you had your gallbladder removed do you want to talk to your doctor and make sure that this safe for you and also watch for symptoms but bitters Swedish bitters or any of the bitters I like quicksilver bitters X I like Gaia herbs bitters I like better bitters and we have all of those on drjilhealth.com you can take a look yourself and using these with meals that can enhance secretion of bile acid we went to the swiss mountain clinic the last couple years before one of the things that was part of the liver gallbladder detox that we did for a week was taking absinthe which is one of those original bitters with every single meal super bitter I happen to like the bitter taste so I don't mind it but I literally carry a little vial of absinthe in my purse to use with meals at times and sometimes I share it for fun with friends and it's fun to see the faces because that bitter is so bitter you get these amazingly contorted faces when you share your bitters so it's kind of fun so bitters tadka have you heard of tadka tadka is a great product to help with bile flow so I'm a huge fan of tadka let's see if I can find a link for you to show you the product that I like it's also at drjilhealth.com I'm looking and I don't see it listed there so we'll get you a link for that but tadka is a great product as well so those are just some things you can do with your meals okay I'm going to do one more question and then we will wrap it up for today and I'll be back in next month I have a question on intermittent fasting and diets to suppress latent viruses oh we got so many good questions and thank you Michelle for your thanks so low IG okay I think I'm going to answer a couple of these love tadka Taylor that's what I just mentioned intermittent fasting okay so intermittent fasting has so many benefits fasting is one of the few things that has shown reversal of mitochondrial aging so it's probably the most strong evidence for anti-aging so I'm a huge fan that would be like 12 to 16 hours overnight fasting and then so maybe you stop eating at 7 p.m and then wait till 10 or 11 a.m to have your first meal and part of why that does that is every time we eat a meal if you heard Dr. Eric Lundquist and I talked in the hour previous go back and check out that video because every time you are eating even if you're healthy you are increasing the load on your immune system because we have some permeability that happens after your meals so when you fast you basically give your immune system a break and that's really cool now the other thing we do is we can induce a decreased leptin and increased metabolism of glucose and increased usage of ketones which are alternative fuels to glucose and because of that you can often have more resilience metabolically so you can reverse some of the stuff that's going towards diabetes or reverse if you're having trouble losing weight and you have leptin resistance so I'm a huge fan of intermittent fasting now the caveats are if you have severe adrenal dysfunction hypoadrenia or HP axis dysfunction fasting can be stressful on the adrenals because when you're fasting you're requiring your liver to release glucose to sustain blood sugar and if your adrenals aren't working optimally that may not happen you know well so you may be prone to low blood sugars if you're pregnant I don't recommend it if you are extremes of age I don't recommend it or if you're just you know metabolically if you're really sick it can be a little bit of a stressor to the body now stressor isn't bad that can be good but some of those extremes I wouldn't recommend intermittent fasting or if you have blood sugar issues okay I think for today I'm going to wrap this up I will be back next month stay tuned if you watch the feed you'll see right now it's every fourth Friday we'll be back here at 4 p.m. mountain to answer your questions so please come back and join us thank you all so much today I hope you have a wonderful weekend and it was great to see you all virtually we'll talk soon bye


Statistics reference books can be super useful, but I hate having to slog through pages of obtuse gambling metaphors just to get the one formula I need. Talk about renum and wheat. When I research an idea for an episode, I often find myself in, way over my head, trying to answer a burning question in a subject I know practically nothing about. I can sometimes pester smart friends to help me find my feet, but just as often, I'm flailing helplessly in a vast sea of academic papers and dense books. Just for a sense of what I'm talking about, my last episode had nine papers, three articles, and three books in the citations, but I had to chew on about twice that many just to figure out what I was looking for in a useful vein of established work. That is a daunting pile of stuff to absorb and understand. Obviously, I skim wherever I can and bail if I realize I'm wasting my time, but even then it can be a real slog to simply parse enough text to decide that someone's life's work, although fascinating, is not going to get me closer to an answer. Recently, Mike Rugnetta of YouTube and Podcasting fame pointed me at a short practical guide written by University of Michigan professor Paul and Edwards, titled How to Read a Book. Edwards studies information and knowledge infrastructures, so you can imagine that when he talks about the method he uses to read books, he's not just going to tell you to set aside 30 minutes before bedtime and get a decent bookmark. His approach to nonfiction reading is laser focused on extracting the greatest informational content from a text while expending the least amount of time and effort, juicing a book from maximum insight wherever it's most plump. The experience is different than how I usually read, but I have to admit it's been incredibly effective for getting a lot of stuff into my head, contextualizing it, and getting to a place where I can synthesize it with other stuff, all much much faster than if I were to take my usual approach of simply reading everything from cover to cover as fast as I can. Efficiency isn't the be all and all of reading nonfiction, but if you're like me, you often engage with books, articles, and papers for a particular purpose, to answer a question, to inform a decision, to better understand and act on the world. While it can certainly be entertaining and enriching to simply read a nonfiction book however the author decided to lay it out, it's nice to have the option of surgically extracting the information you need in whatever sequence works best for your brain and your goals, and uploading it all into your memory like you're Neo. I highly recommend reading The Guide Yourself, but I'll sketch a brief summary of how to read a book here, an outline of Edward's strategy to think about and maybe try on your own. He breaks his method into a few simple techniques, any of which can be used in isolation, but the central technique is simply this. Decide how long you want to spend on the text, then read the thing three times in that timeframe. A brief 20,000 foot overview, jumping around to scout out which parts are likely to be helpful, a slow methodical crawl through those sections to answer questions, uncover meaning, and really wrap your head around the main points, then one final run to summarize and memorize whatever you've uncovered. The repetition really helps to cement things in your memory, but it's also helpful to dedicate your entire cognitive capacity to the tasks of discovery, analysis, and synthesis on their own, instead of constantly shifting gears, trying to do all three at the same time. In order to make the most of that technique, Edward's encourages jumping around in the text and focusing on the most information-dense sections, which are often arranged in a sort of fractal hourglass pattern. At every level of organization, text tends to wind its way from very general ideas at the beginning, through bitty details and piecemeal development, to broad summaries in the conclusion. Exploiting this shape can be useful to locate the meaty bits of a book, working from the outside of the hourglass inward. The front and back covers and inner jacket flaps convey an awful lot of general information about a book. The title, the subtitle, the author, more on that later, a summary, and maybe what sorts of people or organizations have endorsed it, can give you a remarkably good feel for what you're likely to find if you delve deeper, if it's likely to be useful for your goals, or if you should just pull the ripcord and read something else. Moving further in from the ends of the hourglass, we find the table contents, which give you an idea of the contents and how they're organized, a decent map detailing which sections might be worth examining further, and the index. Before I encountered Edward's guide, I thought of indices as lookup tools, something you flip to only when you're trying to find something specific. But he suggests that the breakdown of topics and subtopics there will tell you a lot about what the author thinks is important. Other 50 page references under the mean dynasty entry? Probably pretty central to the story. The same goes for the bibliography at the end of an academic paper. What sorts of journals and citations do the authors think are useful for understanding their work? Sections or subsections of the book also tend to have their own mini hourglass shapes. Focusing more on chapter titles and summaries, introductions and conclusions, can tell you a lot more than if you were to pick a random paragraph out of the middle. The idea is that the wide parts of the hourglass are denser with information than the details the author uses to navigate between them, so focusing your efforts there will probably be most efficacious. The same thing goes for information dense structures like figures, which can tell a story all on their own. If a picture is worth a thousand words, it might be a better use of your time than five minutes of reading. Of course, there's more information available in the text than the literal meaning of whatever's on the page. Every textual work is published into a context, from some history, by some person, with their own perspective and goals. Who that author is, where they're coming from, what academic tradition they're publishing into, what ideas they're responding to, what organizations they're representing, who's paying them to write, who stands to benefit from their work, who endorsed it, what sorts of expertise or blind spots they might bring to this topic. Weighing these sorts of factors can grant exponentially more insight than trying to read a book as though it's sprung into existence in the vacuum. Maintaining awareness of a book's context can also help with critical active reading, which is essential for really ringing it for everything it's worth. Considering that context naturally raises questions and encourages theorizing about the work as you process it, which can be helpful for your final memorization pass if you write your thoughts down. Possibly, embrace yourself for this, in the book. This was a big change for me. I normally treat books with kid gloves, as if they were sacred objects, rather than tools to wield in whatever way improves my understanding most effectively. Obviously, I can't do this with every book I pick up, but Edward's recommendation to write on the actual pages has been an incredibly effective way to remember what bits stuck out to me and how they relate to my goals. I've also found it helps to keep me active in thinking critically about what I'm reading. Penciling a little question mark next to an especially vague paragraph or summarizing a page in my own words on the page gives me a sense of agency and interactivity. It makes reading feel more like an engaged dialogue with the author and their ideas. Edward's recommends doing this with restraint. Two or three short marks per page at most, with the aim of distilling the text into a compact shape that makes the most sense to you. It might have taken the author 20 pages to describe some phenomenon clearly enough for any random reader to get it, but if I can just write the word Darmock at the top of this chapter, now I can rapidly recall exactly what those 20 pages are about when I do my final pass, or if I ever need to crack it open again in the future. Now, if you're like me, this take-no-prisoners approach to absorbing nonfiction may seem as though it erodes some of the value of a book. You're plundering the thing, rampaging over its carefully drawn boundaries and structure, relentlessly pursuing the information you find most useful rather than patiently following the author on whatever path they've laid out for you. But Edward's notes that even if we were to read everything linearly in its totality, from cover to cover, we're only going to remember a fraction of what's there. Even if we had all day to read everything we want in excruciating detail, our time and cognitive energy is ultimately finite. By strategically seeking out and excavating the bits that are most relevant to our interests for everything they're worth, we have a better shot at making sure the fraction we remember is actually useful for our purposes, and that the effort we exert results in the greatest and longest-lasting informational gains. Printed text is remarkably well suited to this approach, allowing you to easily access any part of the material in any order that works best for you. YouTube videos, on the other hand, three-time hourglass index. Not so much. Do you think Edward's approach to reading nonfiction might facilitate rapid comprehension? Do you have a really good eraser so you don't feel so anxious about writing an emergence? Please leave a comment below and let me know what you think. Thank you very much for watching. Don't forget to follow up on subscribe, blog, share, and don't stop thunking.


IOM has set up a task force specifically to look at all the different aspects in relation to responding to COVID-19 and the coronavirus elements that are hitting everyone, including UN agencies in regards to our operations, but also in regards to duty of care. We are in a pandemic that has raised a whole range of issues that some people, including Professor Ian Golden, who we've worked with at Oxford, has been talking about for quite some time now, but those kind of predictions, those insights and that analysis hasn't really been taken on by states and by other communities of interest, so we are now in a very strong reactionary kind of phase, trying to look at knowledge and information and the latest statistics and coming up with operational responses really quickly. IOM's focus is first and foremost on our member states and on our beneficiaries, as well as staff welfare around the world. Our Director-General is very keenly focused on working with a range of different partners to support migrants who might be in displaced person camps around the world and haven't got that ability to engage in social isolation, for example. We're working with states to facilitate responses in regards to migration health, in regards to operations and trying, everything that we can do to keep operations going. At the moment, we're also facing issues around containment, around trying to minimise the risks for all people in the communities, and we would always argue quite strongly that that includes migrants. Let's not just look at those who are citizens of a country, but include everybody in the community.