When I give this talk before is about 40 minutes and so I'll try and get it all into 30 minutes. So I'm Robert Stewart and I'm the Chief Architect at CastLight and so what I'm going to talk about today is how CastLight Health uses MongoDB to do geospatial searches for healthcare pricing data. So what I'm going to do at first is just give a little bit of background about CastLight Health to give some context for the particular problems that we needed to solve and then I'll go a little more in depth of into those actual problems from the business perspective as well as kind of the technical problems I had to solve. And then as is often the case, you have iterative solutions to this. You take a shot at it and it do something simple, it works great and then things change. The data grows dramatically and then you have to adjust to that and scale up your solution and so we went through a couple iterations of that and I'll talk about mostly about the final solution we came up with, with MongoDB and geospatial indexes and even there kind of like we iterated on which indexes to use and then running the database on top of SSDs and why we did that and why there's huge value in doing that for our use case. And finally I'll talk about an operational aspect of what we did, taking advantage of a feature in MongoDB called replica set that made it very, very simple to flip between big bulk sets of data with like really no impact on our production system. And this is, it's nothing earth shattering, it's not patentable, one click flipping or anything like that but for just a little bit of extra cost around the SSDs it gave us incredible operational flexibility so if you can do it, I definitely recommend it. So Castelite is a, we're a growing startup so we're probably at about 270 people or so now, we're in San Francisco and so we've been there about five years and what we do is we develop hosted and web applications that provide consumers with unbiased information on healthcare costs and quality and so you can effectively shop for healthcare based on cost, quality and convenience. So what we sell to employers though, so employers and health plans and so typically we're selling to medium to large to mega large employers who usually have their self insured which basically means that rather than the insurance company taking the risk, they're taking the risk but at reduced premiums and so they have a lot of skin in the game around how much is spent on healthcare and how healthy their employees are and of course the consumers do because a lot of these companies are switching to high deductible healthcare plans and so the employees and their adult dependents that we support it's very important for them to be able to search for high quality low cost healthcare providers. So we've taken in about 181 million in funding, fortunately we still have most of that and things are going pretty well so we've gotten some pretty good recognition in the area of what we're doing and growing fast selling huge customers which of course has caused my database to grow enormously and we're hiring as always. So if you're an employee of a customer of CastLite, this is what you would see when you log into our application and we have a web application, a mobile web application and then native mobile applications on iOS, Android and Windows phone and so this is the main web application so an employee or one of their adult dependents could get access to this. So in addition to being able to see information about your past care so we have nice charts and graphs so you can see how you and your family are using healthcare and what things cost which providers you're going to and you can see information about your plan but you can see real time information so we get real time information about where you are in your deductible and it can be very complicated, there can be individual deductible and family deductible and these things called sandwich deductibles and then the co-insurance and the copay and there are a lot of complicated provisions and so rather than you having to kind of run those numbers in your head of how is this going to affect the cost if I go to a provider, obviously we have the computer doing it because it's fast and it's accurate and it doesn't mind doing those things and so what we do is we provide the user with personalized out-of-pocket estimates for a particular procedure or service before they actually go to that doctor and we can show you comparisons and we have a lot of quality data that will show. So on the middle of this you'll see, this is where you would search and so the big red search button out in the middle so above that there's a zip code that there is there right now but you could make that a street address or city and state and we will geocode that to a latitude and longitude and we just use Google to geocode that and so that will be the search origin, the latitude and longitude will search around and it defaults to 25 miles but you can make it 2 to 100 miles, the search radius of where you're going to look and we're going to find all of the providers that perform that particular procedure or service that are in network for you and we're going to show as much as we can estimates of your out-of-pocket cost you know it's very specific to you. If somebody else logs in, there's somewhere else that are deductible, they'll see different price estimates. So let's say you searched on primary care for adults and so the pretty common thing you're looking for primary care physician and so we'll kind of work left to right in this so like on the left side you see you can adjust the search radius and and then there are a lot of filters the the initial visit is typically a little bit longer and so the cost is based on time for these office visits and so we need to know to give you an accurate estimate a little bit about the visit and then there are a lot of filters so we'll limit it well we'll show you you know how many male and female and various specialties like internal medicine and we'll show you the actual numbers for those so it gives you a sense of like if I were to filter against these things how much is that going to reduce the result set before you actually do it and they'll change as you click on them and then at the top in the center you can see we show the price range so we've gotten gotten the men and the max prices for all of these providers for which we can we can provide estimates and so we have to go get all of this data so in some cases like you search for adult primary care and a major metropolitan area and this is like in downtown San Francisco you might actually get you know thousands of results back so it's a lot of data we have to pull back and do all these out-of-pocket estimates on and it within this location so definitely you know you can imagine where geospatial index has become very important for this to perform well and so then on each of these individual providers if you click on those we'll show you quality information about the providers as well as the cost of other procedures you know maybe you see a great price on some procedure and like I think I'll go there and get that but it gives you a sense of the overall cost of that particular provider for other procedures so so the two main things we needed to do is that kind of search that is showed so you were looking for the prices for a particular procedure service performed by any of the providers that are in network for you in a geographical constrained geographical area and so that's the main thing I'll talk about today also there's the lookup for all the provide all the prices for a particular procedure by that single provider well for all procedures by that single provider but that's obviously very simple thing to do you can do that with basically any kind of database you could index that and also we want sub second response we want this to be super snappy you know we don't want this we want this to be like any kind of consumer shopping sort of website and so we demand of ourselves that we keep the search time under one second for these searches even when we're turning thousands of prices and doing all these calculations to give out-of-pocket estimates so as I mentioned obviously need a very fast geospatial index to pull that off and our rate count out in the and this is the actual this this is the curve of the rates that we have in our database right now and on the far right in August we're we're now we hit a billion rates that we have and again a rate is a procedure performed by a provider at a particular location as part of an insurance network because the price may be different if you go to the doctor at his clinic or go at a hospital where he has privileges or she has privileges the price can vary and we have that information and the way we do this is we take in medical claims so we pull in right now we have over a billion medical claims that are de-identified and we have a team called the revenge team and they do reverse engineering and so they take in these medical claims and they reverse engineer the negotiated rates between insurance companies and the medical providers and we have a green plum cluster that we use for that and so from that we've generated a billion of these rate estimates for a health care pricing all over the US and every month these these increase so we do another one of these runs we get more more claims to analyze and just in going from July to August we went from 750 million rates to a billion rates and so obviously a pretty big jump that we needed to be able to handle and get that data into the app with minimal impact ideally no impact on the actual users another thing about it is that it's difficult to index the data so that you always get sequential reads so you know with with databases typically you're using a most common type of index is a B tree and and and then and really specifically a B plus tree and and that kind of goes back to the nature of block devices and sequential versus random so typically the you know there are a lot of reasons to create an index on on a table or a collection of documents and two of the main things you're trying to do one is you're trying to reduce the the data the items that are in the collection or table to as small as possible as close as possible to the result set before you return it and the other thing you're trying to do is try and make sure that those items that you do look at have locality on the physical device you're storing it at now that's really important on a hard drive because the the while the sequential read time is really fast basically the bandwidth of the drive the random read time is affected by the seek time on the disk so now you're looking at like maybe 10 milliseconds or so seek time you do a lot of random reads and it really adds up but as it turns out with SSDs it totally changes the story because with an SSD the random read speed is much much closer to the sequential read speed and so you don't have to worry as much about this data locality there's not a big penalty of doing more random reads and the payoffs of that is you don't have to worry as much about the index you don't have to have like in my case I would have had a very complex big index takes a long time to build a long time to maintain the big thing is bad of course on an SSD because it costs more but but also just the time of maintaining it as well so it's kind of you can cheat on that of having a simpler index if it's on an SSD and the cost has gone way way down so definitely worth looking into so no our system it's there's lots more moving pieces in it but just as far as like the pricing retrieval aspect of it this is what it looks like so up at the top the user they're coming in through a web browser and or they've got a mobile web browser we have a mobile app and then the mobile web app and then these three native mobile apps but all those however they come in it all funnels down through it's like there's a Ruby on Rails app and then we've got a applicant client side apps that are single page apps written in JavaScript with Angular but it eventually comes down into our service layer and that's written in Java and so the pricing service is kind of the layer that interfaces down to the prices so one nice thing is I'll talk about what I started with was my sequel I was able to transition it to MongoDB just in that layer and not affect anything above it so what we started is and this back when we had maybe two million rates that were these two million prices that we're looking at it just store it in my sequel pull it out of my sequel when the pricing service starts up but once that hit about 150 million rates it started to become problematic because what we need to do is because there's no geospatial index built into my sequel so I had to do that in Java and the pricing service so I had to build at least the basic part of that index and and so that takes time to build and so it I eventually was hitting like I had a 55 gigabyte JVM heap which is rather large and I was spending a lot of time on GC tuning CMS collector that is your friend when you're doing things like this way way better than the parallel throughput collector but so it's a lot of time I'm like trying to work around this and then it takes it was taking 20 minutes for the pricing service to start up because I didn't want to slam the database while I was reading in all that data and then I still wanted to background cash all the additional data and that was like three hours before that happened so when I would start up we do a rolling restart on the pricing service it would be pretty slow until we got a lot of the data cashed that's fine if you're doing your rolling restarts late at night but if for some reason you had to do it during the day not so good and by slow I mean that if the data wasn't in in memory and in my heap and and the NODB buffer didn't have it cashed on the my sequel side it could take up to two minutes to query so obviously that's pretty bad I couldn't afford to do that so enter the Mongo so I've been working with MongoDB for quite a while and and I was aware of the geospatial indexes in it and so I thought well let's take a look that probably will fit our use case and fortunately for us it worked out really well and kind of solve the problem for us so MongoDB has a bunch of different types of geospatial indexes and I'm not going to go into a lot of detail about MongoDB there's a lot of information out there's a lot of information this conference about it so I mainly just focus on the parts of it that we used so there there were some standard 2d indexes in Mongo when I started looking at it for this it was around 2.2 was the version of Mongo and it was really just too slow for for my use case and but there was another one called the Geo haystack index and it was pretty interesting index turned out it was conceptually very very similar to what we were doing in Java it's basically taking a grid and just so like an XY rectilinear coordinate system and slapping it down on a you know whatever you're using like say the earth your locations or latitude longitude and then storing things inside of those grid cells and and so that actually worked pretty well but just in the last couple of weeks I've switched over to MongoDB 2.4 and it has a 2d sphere index and it's a lot more flexible and turns out that my testing shows it's it's actually even faster so we're we'll be switching over to that in our September release so just a quick aside on mappings and projections and so the in the effects of using a non-spherical index so when when you look at something like Google Maps you see what's called a Mercator projection typically and that's it's a cylindrical projection so if you just imagine the earth and it's splattered out onto a cylinder that's what it looks like on the map and so there there's definitely distortion that you get and when you look at say the latitudes as you go 10 degrees of latitude from the equator to a pole it stays the same so 690 miles roughly in between 10 degrees for every 10 degrees but with longitude obviously the the longitude is going to collapse down to zero at the pole and so the farther you go north the more distortion you get and so you have to be very careful about if you're using the haystack index or any other kind of rectilinear index that not taking into account this the spherical nature of the earth the farther you go north the worse your results get or the more inaccurate and you have to account for that so at the southern tip of the US it's typically it's down to about 650 miles is 10 degrees of longitude but even by the time you get to the northern part of the US just a little bit above into Canada well above Montana and North Dakota it's down to 240 miles and so you can see there's quite a bit of distortion that's happening there and and also it makes these states look bigger so I mean Canada is big but it's not that big as it sees on Google Mass Montana North Dakota actually not that big Texas however actually is that big so so the haystack index so we use longitude latitude for XY coordinate system so you have to keep that in in mind as well because longitude is the X and normally always talk about latitude longitude but it but you have to reverse that if you don't do that you will get crazy crazy results and I can speak from experience so then also the for us our default search radius was 25 miles and about halfway up through the US kind of the midpoint of the US that's about 0.5 degrees so in the haystack index you you have to do all the radius and bucket size all of that is in the same units as your coordinate system which is a little bit funky you know our users don't typically say you know they're not thinking okay I want to find a doctor who's within 0.4 degrees of longitude of my house so you have to accommodate for that and because of that distortion you end up if you don't you end up with this elliptical search radius in the ellipse gets really elliptical up in the northern part of the US so you overcompensate for that and that's what we did and then go back and prune all the ones that that fall out they're too far away on latitude and so this is just to show what it's like in MongoDB so this is the JavaScript commands the first one is to create that index to create the geo haystack index and when you do that you can have with a haystack index you can have one additional filter and so in my case the procedure mapping ID is was the additional thing so the thing that provided the most selectivity of course for me anyway it was the location and then the procedure mapping and then the second is there's there's a you just have to use a this database command and so I'm in that command I'm saying I I've broken all of my pricing data into these natural buckets that are a simple way of partitioning my system based on insurance companies and employers and so I'm giving the search origin the max distance in degrees and then I can specify one value and this is a little bit of a downside of the haystack index that second part of the index has to be a literal value like a number or string it can't be an array which is too bad because that would really have helped me and so those are some of the drawbacks of it but it's still it's pretty fast and then the third thing a little bit of murmur is there's a bug in the haystack index if you try and search on the second part of your composite index and you don't have an index on it itself a separate index then you get an error but if you're going to search on that you probably want to have an index on that so so that worked for us pretty well up until now but what has started happening you know again you're like your data changes and so we started getting these these buckets of data that you know like one of them we have a hundred and fifty million prices and a lot of the prices that are in there are out of network for the users because there are a lot of provider networks and the user has access to a small number of those so what happens start we're looking at a lot of data and then filtering based on the provider network on the app side so I took a look at the 2D sphere index because it would let me have additional additional parts to the composite index and it also supports earth like spherical geometries which is great so the default is in fact the earth for the spherical geometry that supports and then when you specify the location I was still using X Y pairs it works out well but you can use GeoJSON to specify the location of the document that you're inserting and it indexes that also supports line string and polygon so pretty good support for GeoJSON if you're already using that it's pretty nice and then the other thing with the with a haystack index you really the only thing you could do was essentially inclusion in a circle and a flat circle with the 2D sphere there's besides inclusion and there's inclusion in like you know it's inside of this polygon and you know inside of different shapes is quite can be quite nice as well as intersection you know give me all the documents that intersect these two two you know shapes in proximity to a point give me that the top hundred documents that are close to this particular point so much more flexible and so for comparison here's how you would actually use it so the first command again this is the JavaScript of how you would do it so like in the Mongo console you can do this so what I'm doing is I inside of my pricing database I'm saying in I have a collection named priceables one there are a bunch of those in there so on that collection I'm telling it to make sure there's an index so if it already exists it just ignores this otherwise it creates it so create an index make the first part of the index be a 2D sphere index on that low key and it's an array of longitude latitude in my case and then the second part of the index is the procedure mapping ID which is a key on the document named PM and then the third part of the index is the provider network so then there's also a PN key that's on there and it doesn't have to be in this order if you found more selectivity by some other thing and then the geospatial part didn't it provided some additional selectivity but wasn't the most important you could put it later so 2D sphere is really a very flexible index then the second command here this is just doing a search in it so I'm telling MongoDB from the Mongo console to find all the documents where the low key and that's it was just what I named it again is the key inside the document and the geo within so that's an operator and MongoDB and it's basically specifying inclusion and the type the shape that I'm I want to find things that are included in is a if you think of like a yarmulke somebody drops a yarmulke down on a gigantic 125 mile radius yarmulke drops it onto the earth and so you get this spherical sort of cap sitting on the earth that's the shape that I'm searching in and so that's what I'm specifying here I'm specifying the longitude and latitude of the center of that and then the radius but this time it's nice it's in radians because of course now we're in spherical coordinates and so now I don't have to worry about distortion and then finally I'm specifying that a particular procedure mapping and then another so there's another operator in MongoDB it's it's very much like in SQL and in so I'm just saying where also where the documents have this particular procedure mapping ID and they have a provider network ID that's either of one of those return those back so my results so it's highly accurate geospatial accurate I didn't have to do any kind of go through and do any pruning of the results that came back and it was even faster than a haystack index in almost all cases and the main reason it was faster for me is that I really benefited from that third part of the composite index and that made a big difference so so it's great so now I can I have these geospatial indexes and so I can search for search for prices based on location but at this point I was still using hard drives and so the the good thing is so the MongoDB Geo index was twice as fast as Java on top of my SQL but twice as fast just means it was one minute as opposed to two minutes so it's pretty bad when the data was not cached and and so I spent a little quality time with IO stat and VM stat and became pretty clear I'm suffering death by random read just way too many random reads to find all the data so I went out and got a $200 Samsung SSD 256 giga gig SSD stuck in a Linux desktop and now my typical query time went from a minute to you know well under a hundred milliseconds for most queries and even the big ones where I'm pulling back tens of thousands of documents it was still taking only about 150 milliseconds so it was really really fast so the MongoDB comes with this nice tool it's just a generically useful tool I mean there are a ton of tools out there like Bonnie and stuff like that for measuring disk IO performance so Mongo perf is pretty great for that and it also it has a mode that gives you a pretty good sense of how a particular device will work with MongoDB because of the way MongoDB uses memory map files and so what I did just to compare some things so I've got enterprise grade SSDs in my production and QA systems and in QA we're using VMware VMs so on the in the production system I'm getting 74,000 IOPS and so that's pretty great you know with with a hard drive I was getting you know with a raid 0 plus 1 array or 1 plus 0 array I was getting about 300 IOPS so this is a huge performance boost there is a drawback of going with a virtualized IO with VMware so that kind of killed it down to about 30k IOPS still pretty great but that definitely a noticeable cost now this is I'm slamming the drive you know so it's not quite the normal mode of operation but so you definitely want to keep that in mind of this huge when you get with an SSD when you look at the percentage loss you get by running VMs on top of it it's not insignificant you know so definitely consider that and then just a consumer grade an MLC 256 gig Samsung 830 that I had I was getting 47,000 IOPS just sitting in my Linux desktop box so that's pretty great run everything on that put put your whole system on that you'll be happy so I wanted to so now I've got these geospatial indexes so I can look up the data really fast we look it up based on these geospatial indexes and it's fast on these SSDs so now I want to get this data into my system and how can I do this with having as little impact as possible on users because I want to change I want to be able to change this data just on the fly and be it have it be totally transparent to the user when I put in new pricing data and so we do major price updates monthly but I also wanted the flexibility of like whenever I wanted like oh we found it if we found an error in the data or we just want to refresh the pricing data I want to be able to do that during the day and so and so our the main thing to be kind of aware of in this that that affects us is so our for us anyway for our use case we're IO bound we're not CPU bound these queries that MongoDB is doing almost no impact on typically I see like 0.1% CPU use across you know six cores but the IO can be pretty heavy the load on the SSDs so what I did is I set up two MongoDB replica sets and I put multiple SSDs in the servers and so I and so I'm running multiple MongoDB demons on each of these servers so this picture here kind of depicts what we did and so so the ellipses there are represent the replica sets so prod pricing one and prod pricing two and so on in MongoDB a replica set kind of the minimal replica set is has three members and you have two members that have all the data one of them at any given time one behaves as the primary and one behaves as the secondary and then the third one is you know if you're you're fine with just having the two is an arbiter and so it doesn't store any data has very little impact on the server it's running on what it's doing it's heart beating with the other instances and doing quorum voting so if the primary were to go down and that actually did happen for us recently the arbiter and the secondary would vote they would see okay we still have a quorum and the secondary would be promoted to be the primary the primary let's say it was a network partition then the primary would go okay I'm all by myself now I will stop responding to requests and so for me what happened so I've not had this problem with MongoDB but I actually literally had the SSD die on me and on the primary of course and MongoDB very nicely within milliseconds failed over to the secondary and so that was pretty awesome so then I have the second replica set and so these in the the first replica set the instances they're all listening on port 28001 and the other one it's 28002 just what I chose just to keep myself sane of like ones and twos everywhere you can remember things so it's running on the same system it's just its data directory is on a different SSD so that I can load it kind of at will and have really no impact on the active replica set and that turned out to work fantastic so what I actually do is I load up all this data on our QA systems and because the the files are portable of course I just zip them up and use PIG Z super awesome if you got a lot of cores and then I transfer that data up to the SSD in on the production on the passive replica set I put it on the primary and the secondary I don't even use replication I just literally like replace the data directories whole and then I restart those Mongo D instances and then it's ready to go I have the new data and and that's actually pretty fast then Mongo has this other really nice thing like if you if you use my sequel you know probably a lot of other databases if you do like a select count star a lot of times on a transactional table that will cause the the database demon to page it in so with Mongo and it's using memory map files you get really great performance if you're working set is in memory and so there's a touch command and it very very efficiently reads one byte from every page and so that will page for a particular collection like in this case the price was one collection it will page in all the the indexes so the be all my geospatial index and all the parts of it and then if I specify data true it will then page in actually all the data as well and so as much memory you got you know you definitely want to pull it into into memory and then on my pricing service I I just have an operation on it where I can hit the pricing service instances kind of across all of our app servers and have it flip so I just tell it essentially I'm just telling it connect to this other replica set and when you do that you want to tell it when you tell it to connect to the other replica set you want to tell it all the servers that make up the replica set if you just tell it one it'll find it and it will use that that part of the replica set to find all the other members but if your pricing service restarted it has to look up that information and that guy happens to be down then it won't find it so definitely important to do it that way so the the drawbacks of doing this so there's a little bit of extra cost but it's only the extra SSDs you know I didn't have to have separate servers and we're running on managed servers at rack space and cost is a big factor here these are pretty big machines so I'm right there 128 gig machines with six cores and obviously these SSDs so I wanted to memorize minimize the number of machines that I had and I really only I only need one replica set to have its memory have its data and memory at a time so so if I had a passive replica set on other servers they would just be sitting there on totally unused the actual server itself so that's all read-only data so this is great you know so this works really well if you have a lot of read-only data so we started adding caching though as well and so we're caching data from remote pricing lookups into the into these Mongo D instances so of course I'm going to lose that when I flip and Mongo DB does have this really nice feature called TTL collections it's it's kind of like we also have memcache in our architecture and so very similar sort of functionality they vixit after a certain time that you set for the item but it was just nice to keep everything in Mongo but we typically we do this flipping late at night and and it's only a three hour cache and so there's really not that much cost to basically flush the cache when I flip over so the the results that we end up getting is with a cold cache as opposed to two minutes or even one minute now it's it's totally acceptable it's like a maybe a hundred to two hundred milliseconds kind of worst case if I if the cache is even warm just hitting in things off the SSD if I have a warm cache performance is really awesome it gets down into tens of milliseconds to look up all this data and then the pricing service startup as opposed to taking over an hour to do a rolling restart on my app servers now it's just a couple of seconds per instance because now the performance is so good I don't do any caching in the service layer I just don't have to do it Mongo does it all for me and and now I can do these major rate updates and there's no production impact so actually if I did want to do it during the day that would be totally fine I could flip over to another replica set I can load the the passive replica set during the day as well and not impact production and which lets me do these minor rate updates which before we could never do anything like that so then in summary the the geo haystack index if you're retrieving a lot of documents in a you know I say a constrained search area but we were searching out to a hundred miles and performance was still pretty good and you've got very simple geospatial searches because again it only lets you do show me all the things that are inside of this circle and a flat 2d coordinate system and if you only have a single secondary filter so if that's your case which ours initially was that was exactly our case then it works really well and it's pretty easy to use there's not a ton of documentation but it's not that hard to figure out if however you have a more complex type of searches that you need to do or you need to do more complex indexing like the that secondary part of the composite index doesn't provide enough selectivity then you definitely want to look at the 2d sphere in general I would say look at the 2d sphere and probably at this point not really bother with a haystack index at all SSDs if you've got a lot of random reads it's just a just a massive massive win the value is enormous there and you can get huge performance at a huge performance boost at a fairly low cost and it definitely reduces your need for complex indexes and then replicates that flipping it's going to work great if you do need to do these fairly instantaneous swaps of large amounts of data and your data it's primarily read only you know maybe if you have a cache that you don't mind losing and so it's if it's a fantastic trade-off of cost for operational flexibility right so any questions yes yes so the question is about such a good question about where the reads and writes go so the the writes always go to the primary and they get read so when I'm writing to the cache it gets replicated to the secondary when I do the reads there's a with MongoDB with the drivers their read concerns and write concerns and so our right concerns are kind of main thing but with the read concerns you can do things like you can say I'm fine with reading from slaves or I want to read from the slaves from the secondaries there's also another one set that's what I want to do is read from the nearest and so that's really good if some of the members of your replica set are remote or they're even in a different rack and so it will prefer and it keeps track of ping times and so it will use the instances that are closest to it and so that's what I use because since the data is not changing very much and it's between the big bulk data and then the cache if I don't find it in the cache even though it's really there on the master it's not that big of a deal then you know I'm fine with that and so if the master got really heavily loaded the primary got really heavily loaded then all the reeds would start going to the secondary and I would get some load balancing there and so then if eventually I got to the point where I really had a lot of load I could just start adding more secondaries to this and more of the reads would they would just automatically get offloaded to the secondaries so the questions yes yeah yeah so the question is whether you could use polygons for searching versus a sphere and absolutely so the when you do the search that geo within so you're saying I want to find things included in this shape and in my case I the opera the second operator that I specified with center sphere and so that was the circle kind of projected but I could specify a polygon at that point so you can specify the points the geo JSON points that make up a polygon and it will return just the documents that are included in that polygonal shape okay anything else alright thank you very much


Given an algebraic structure with an identity, one question we could ask is could G star have more than one identity element? To answer this question, remember that definitions are the whole of mathematics, and an identity element is one that if it operates on any element G, it's going to give us G itself. Now a useful proof strategy in abstract algebra, and many other areas of mathematics, suppose there are two. So suppose E and E prime are both identity elements. Definitions are the whole of mathematics, all else is commentary, let's pull in our definition of identity. Now since E is the identity element, we know that E star E prime has to give us E prime. But wait, if E prime is the identity, we know that E star E prime has to give us E. But our products are both E star E prime, and so that means the results E prime and E have to be equal, and so this gives us the following theorem, let G star be an algebraic structure, if it exists, the identity is unique. So remember that a semi-group with an identity is a monoid, and so we might ask the question, since a monoid is a semi-group and semi-groups don't require the Latin square property, what happens if we include it? Well let's find out. Let our group elements be E, X, Y, Z, and so on, where E is our identity element. We'll also assume that G has a finite number of elements.  In other words, we're going to left multiply every element of G by A, and we'll define G star A to be where every element of G is right multiplied by A. Now if G star has the Latin square property, then the elements of A star G are distinct and must include every element of G. And so at least one of them must be the identity, giving us A star P equal the identity for some element P in G, and similarly there must be some element Q in G for which Q star A gives us the identity element. And it's useful to keep in mind that we want to be able to solve equations, we can use these to solve equations. So suppose we've already found these, and so we know that A star X is the identity, and also Y star A is the identity. And suppose we have an equation A star something equals B. So as long as we do the same thing to both sides, we still have an equation, so let's left multiply by Y. Now it's important to understand here that A star Z is supposed to be a single thing, so when we left multiply by Y, it's really Y star the quantity A star Z. And because we're left multiplying, we also have to left multiply by Y on the right hand side and get Y star B. But for now we'll assume that we're working with a semi-group and we have associativity. Remember if we don't have associativity things get a lot more complicated, and here's one of the reasons why. Because we have associativity, we can associate Y and A and then leave Z out. But we know what Y star A is, and since E is the identity, we know what E star Z is. And so we've solved for Z, we've expressed it in terms of Y, the thing that we multiplied on the left to get the identity, and B, the other term in our equation. And so we can solve any simple equation using elements of G as long as every element A has an X and Y, where A star X is the identity and Y star A is the identity. Unfortunately, this doesn't always happen. But if it does, we can be happy about it and also define some new terms. Let G star be an algebraic structure with identity E and let A be some element of G if they exist. The left inverse Y satisfies Y star A equals the identity, while the right inverse X satisfies A star X equals the identity. Now, the hardest thing to remember about the left and the right inverses is that the left inverse only works if it's on the left side. And that should be obvious, but you do have to remember which side is the left, and so the easiest way to remember that is to hold out your hands. Your left hand is the one that forms the L. Now, sometimes the same element could be used for both a left and a right inverse. And if that happens, we say that it is an inverse, no left, no right, and designate the inverse of A to be A to power minus 1. Now, remember, there are only so many symbols, and so while this appears to be an exponent, you don't want to think about this as 1 over A, it's the inverse of A. And let's tie this back in with what we did earlier, where we found that if a monite has a finite number of elements and Latin square property, then every element has both a left inverse and a right inverse. And remember we proved that because when we multiplied everything on the left by A, something had to be the inverse, and likewise if we multiplied everything on the right by A, something had to give us the identity. But here's an important thing to keep in mind, read the fine print. While every element has a left inverse and a right inverse, we've made no claim and, importantly, provided no proof that they are the same. But let's think about that. A monite is a semi-group, and a semi-group has another important property, associativity. So what if we incorporate associativity? So suppose G star is a monite with a finite number of elements at the Latin square property. We already showed that A in G has both a right inverse X and a left inverse Y. So we know that A star X is the identity, and also that Y star A is the identity. Now, since Y is the left inverse, we'll left multiply by Y. And the important thing here is that A star X is already there. So when we star it with Y, we have to treat A star X as a single thing and closing it in parentheses. And since G star is a monite, it's also a semi-group, and so we have associativity. And so we can re-associate. Now, since Y is a left inverse, we know that Y star A is the identity. And since E is the identity, we know that E star X is just X. And that tells us X is equal to Y. And so this proves the following theorem. Suppose G star is a monite with a finite number of elements at the Latin square property, then any element of G has an inverse A inverse. No left, no right, but this inverse can be used on either side to get the identity.


Shaber 1000 here today. I got something weird to happen to me about 20 minutes ago a Little backstory on that I Was heating something up in the microwave and I was in the bedroom watching some YouTube and Well the microwave dinged it went off So when that happens, I just always you know Let my stuff sit in there for a couple minutes kind of cool down a little bit and I was doing that Then I heard it beep again the microwave Doesn't do that the one we had before would beep every minute, you know in case you had to leave something set for so long I thought that's strange. So I came out and and Opened up the microwave and realized it was still it was running I looked down and It was pretty much set for another five minutes And I researched that microwave. It's only a little over a year old It's not supposed to do that. It's not when you leave it set I mean, I've put stuff in there before and heated stuff up and And it You know once it's done it's done it doesn't beep it doesn't turn itself back on it's not on a timer to kick on I Don't know how because you can go up and hit one button One through six you can hit any of them buttons just once and that's the time That's the time that it'll kick on and start cooking like if I hit number three It'll kick on and run for three minutes and shut off So I don't know what happened there. So what I'm gonna do is I'm gonna show you Couple clips here. I've got from a security cam Of when it shut off and it was about three minutes later when I came out when I heard to beep again So fast forward through at three minutes So you can see that I didn't come out and do anything And then you'll hear me say hmm That's weird or something like that and then when I got my stuff out. I walked into the garage to You know play it back and see what was going on and sure enough That's I thought maybe I just hit the wrong button. Maybe I heard a beep and it wasn't there. I don't know So and It did it went off because I had it set for three and a half minutes So why it would shut off and then kick on You know three minutes later on to another five minutes, I don't know It's never done that before it microwaves not designed to do that. It's not supposed to do that So anyway, I'm gonna show you the clips I'll show you a couple times And I'll be back with you. What do you guys think why why would it do that? I mean There was just one beep and I didn't realize it was right I thought that that microwave never gave a minute beep every minute like our old one did and like I said So I just didn't think anything. I but I came out to get my food and then I realized you see me You saw me look for a minute like what's going on here? Excuse me so And then I realized wait a minute this was running when I opened it and when I opened it it was like Four minutes forty seconds. Well, however long it took me to come out here. So it was set on five minutes So here's the clip again Let me know in the comments below what you guys think and have you had that happen because To me that's weird. Someone put this under the paranormal stuff because I Can't see any reason why it would do that. I've tried to replicate it again three different times just now and It's it won't do it. It's not doing it again. So Maybe I'm on off thing. I don't know why it would just kick on and start over for another five minutes Never done that before Not it's not supposed to so she barely meant to be an alleged. I'm gone for now. Thanks for watching. We'll see See you in the next one Hopefully everyone's gonna enjoy their Thanksgiving eat a lot relax enjoy your family Have a great time. We'll see you soon. Bye. Bye guys


Over the last ten years, things have really changed. But for all the darkness, every cause has an effect. For all the talk of change, the present moment is really one of crisis. A crisis of democratic representation. Of identity.  Of a failing economic model, which isn't working for most people. We can't have a media that's beholden to advertisers or the political ambitions of oligarchs. Which is why, in 2013, we founded Novara Media. Unlike corporate media, we are funded by our subscribers. There's no tax avoiders, there's no oil money, and there's no lords. What we're creating is media for you, which quite simply, you make possible. We're looking to raise £40,000, that will allow us to not only keep on paying our contributors but give them a little bit more, as well as keep our studio and take our fantastic Novara events nationwide. To help us get there, go to support.novaramedia.com and give a one-off donation or even better sign up for a subscription. We've already achieved so much, but the truth is, we've barely started.


All rise, all those having been before the Honorable James E. Boebert, chief judge of the United States District Court, in and for the District of Columbia. Now holding this naturalization ceremony, we'll draw a line and give their attention. God saves the United States of America and his honorable court. Please remain standing for the presentation of the colors, the playing of the national anthem, and the retirement of the colors. Colors, advance! Please be seated and come to order. This Honorable Court is now in session. Good morning everybody. My name is Jeb Boesberg and I'm the chief judge of the United States District Court for the District of Columbia, which is just a few blocks away here. When I first joined the court, I learned that each judge had to take on a number of responsibilities once a year, all of which looked like chores to me. Swear in attorneys new to the court, review motions filed by people without lawyers, be available for emergency calls, and preside over naturalization ceremonies. So when I walked into my first ceremony 12 years ago, I really didn't know what to expect. But I quickly saw how amazing an event it is. It is people from all over the world who have worked so hard to attain citizenship. Family members and supporters gathered to celebrate the big day. I was overcome by how impressive it is and I now circle it on my calendar as my favorite ceremonial event that I preside over each year. But those ceremonies, which we hold in our ceremonial courtroom in the District Court, were small potatoes compared to what we have today. This is your first naturalization ceremony I understand in the National Archives. It's my first naturalization ceremony here in the National Archives, too. We're surrounded here by the documents that established our country and our system of government. The Declaration of Independence issued on July 4th, 1776, declaring our independence from Great Britain. You want to know why we have a holiday on July 4th, why we celebrate July 4th? Because that's the day our independence was declared, although it would take a lengthy war to finally secure that independence. The Constitution is here. The document that establishes our system of government and the three branches of that government. The legislative, the executive, and the judicial, of which I am representative today. The Bill of Rights is here, which are the first ten amendments to that Constitution which protect individual liberties, including the freedom of speech, freedom of religion in the press, and the freedom from warrantless searches and seizures. So it is a great honor for me to be here in this incredible space today, and let us begin with getting you folks naturalized. Ms. Logan. All right, I'm sorry, we'll start, I'm sorry, we'll start with Kea Langford first. Deputy Clerk from the U.S. District Court for the District of Columbia. Good morning. May it please the court, when your name is called, please stand and answer here or present and remain standing. Taguise Solomon Terece. Eskel Balon Rosario. Laura Maritza Rojas Amorcho. Columbia. Isabella Carolina Pacil Maroon. Venezuela. Zorca Milen. Serbia. Awa Va. Senegal. Artenei Julisa Orsoto Blanco. El Salvador. Adonis Piablo Mokun. Cameroon. Deepak Dargesh Sheheda. India. Katsila Helemeskel. Telasadit Katsela. Ethiopia. Alyssa Kem Adolfo Okan. Philippines. Brajane Abidi Desta. Erichia. Peter Petrochenko. Belarus. Erin Patrick Murey. Ireland. Alex Marquis. Hungary. Arim Harsaw. Canada. Omar Thomas. Jamaica. Marlenei Davargem De Silva. Portugal. Niquel Chandel Chavelle. Guyana. Ahmed Henay Ghanim. Egypt. Delanem Kojo Tamcoli. Ghana. Yara Lilibeth Vesquez. Mexico. Ahabiel Mangesu. Germany. Moshemi Shahoudri. Bangladesh. Zani Musavi. Afghanistan. Your Honor. There are 24 applicants for naturalization. Each applicant has been examined by the United States Citizenship and Immigration Service, and the government has completed its investigation in each case. It has been determined that each applicant is eligible for naturalization at this time. I move that upon taking the oath of allegiance to United States of America, each applicant present, having answered to his or her name, including those prayers for name change, be granted naturalization as citizens of the United States of America. I grant the motion and we will administer the oath. Please raise your right hand and repeat after me. I hereby declare on oath that I absolutely and entirely renounce and abjure all allegiance and fidelity to any foreign prince, potentate, state or sovereignty of whom or which I have here to for been a subject or citizen that I will support and defend the Constitution and the laws of the United States of America against all enemies foreign and domestic that I will bear true faith and allegiance to the same that I will bear arms on behalf of the United States when required by the law that I will perform noncombatant service in the armed forces of the United States when required by the law that I will perform work of national importance under civilian direction when required by the law and that I take this obligation freely without any mental reservation or purpose of evasion. So help me God. Congratulations, you may be seated. We will now have the Pledge of Allegiance and Pledge of Allegiance to the flag of the United States of America and to the Republic for which it stands one nation under God, indivisible with liberty and justice for all. Everyone please be seated. Please welcome six grade students from Alice Steele Middle School who will recite the preamble to the U.S. Constitution. The people of the United States in order to form a more perfect union, establish justice, ensure domestic tranquility, provide for the common defense, promote the general welfare and secure the blessings of liberty to ourselves and our posterity to ordain and establish this Constitution for the United States of America. Please welcome to the stage the archivist of the United States, Dr. Colleen Shogan. Ladies and gentlemen, distinguished guests and most importantly, our new fellow citizens, welcome to the National Archives. As the archivist of the United States, it's my distinct honor to be the first to officially welcome you as the newest members of our big, boisterous American family. Welcome. 236 years ago this week, delegates from across the states came together in Philadelphia to sign the Constitution. As the students from Alice Steele Middle School so wonderfully recited, it starts with a simple but profound statement. We the people of the United States in order to form a more perfect union. These delegates understood that to succeed our democracy, what George Washington called our great experiment would require the active participation of an informed and engaged citizenry. In fact, at the end of the Constitutional Convention, a woman asked Ben Franklin if the proposed government would result in a republic or a monarchy. Dr. Franklin famously replied, a republic if you can keep it. So what did Dr. Franklin mean? His remark gets to the heart of what's required to sustain a democracy. Any government which derives its just powers from the people requires eternal vigilance, engagement, and knowledge. Today in this rotunda, we are surrounded by the most important documents in our nation's history. Just a few minutes ago, you pledged to uphold the Constitution, which outlines our system of governance. To my right is the Declaration of Independence, which the founders boldly set the vision for the nation, that all men are created equal. The hard work to fulfill this vision is ongoing, and as citizens now, you join the effort. To my left is the Bill of Rights, the first ten amendments to the Constitution. They spell out the fundamental rights and freedoms that are guaranteed to every American, including the freedom of speech, religion, and the press, the right to petition your government, and the right to do process of law. These charters are the bedrock of our democracy, but they are not static relics. They are a testament to the enduring values of freedom, justice, and equality that we are continuously striving to perfect. They are living promises, a covenant between the government and its citizenry. As the archivist of the United States, I hold these charters in trust, but I hope you will always remember, as American citizens, they belong to you. Now it's my pleasure to introduce someone who knows firsthand what today's naturalization ceremony means for you. Reverend Eugene Cho is the president and CEO of Bread for the World, an advocacy organization that works to empower policies and programs that can help end world hunger. His family made the hard trip from North Korea to South Korea, where he was born, and then the even harder decision to leave their homeland to come here to the United States. Reverend Cho is no stranger to making his voice heard. He has been recognized by the Department of Homeland Security as an outstanding American by choice. Please join me in welcoming Reverend Cho, and congratulations again to my fellow citizens. Well, good morning, everyone. This is one of, I hope, one of the most exciting days of your lives, and so let me share that once more. Good morning, everyone. Good morning, good morning. Well, let me join with others to extend congratulations to each of you on this special day and ceremony to celebrate your naturalization and citizenship. It is truly an honor, a privilege, to join you. But before I continue with my remarks, I want to take a moment to extend my gratitude again to Dr. Shogan and Judge Bosberg for the privilege of this opportunity to join this special occasion. If I may, I'd like to share briefly why this is such an honor for me. Even in the earlier portions of the ceremonies, I found myself holding back tears, which I wasn't expecting.  But let me share, going further back, a glimpse of my story. My father was born in what is now called North Korea. If you were to ask him where he was born, he wouldn't say North Korea, because back then, there was only one country. He was born in Korea. In a very small village outside of a larger city called Pyongyang, which is now the capital city of North Korea. As one of six children, he faced extreme hunger and poverty. The stories that he shares are hard to believe. In search of a better life, his family fled south. He was six years old when they made that decision in the middle of the night that they had to flee away, only to later endure through the devastation of the Korean War. Fast forward many years in 1977, my parents themselves made a difficult decision to leave their homeland South Korea to come to the United States in hopes of providing more opportunities for my two older brothers and me. I was six years old. This was not an easy decision, and I wish we had all the time today to hear all of the stories that have led you to this moment. My parents left all that was familiar and comfortable with limited financial resources, a few words of imperfect phrases of English, but they were driven by their faith, their hopes of self-determination, and the promises and opportunities of this beautiful and imperfect nation. Their faith, decision, and courage has changed the trajectory of our lives. Not just mine, but my children, and my children's children, and I am so grateful. The journey hasn't always been easy, and I suspect we all know that part of the story. There have been many challenges, but I remember the day perhaps one of the most emotional moments of my life when I, the youngest of three sons, was the last to graduate from college. And my father, who was not able to go to school, my mother was not able to go to school. But I remember that day, many years ago, my father wept in tears on my graduation day and in Korean, he said, Which means, Eugene, now that you have graduated from college, your father can now die in peace. Indeed, their decision to immigrate, to become naturalized citizens, has changed the trajectory of our lives. How so? Imagine this, a son of my parents, of my grandparents, welcoming 25 new naturalized citizens from 24 nations in front of the original Declaration of Independence, the U.S. Constitution, the Bill of Rights, at the Rotunda of the National Archives Museum. Wow, it's pretty amazing. I am here because of them. But I share this because I also want to remind you, there is, in my opinion, no such thing as a self-made person.  And as you take some time to reflect on those that have given to you, it's important to pause, give thanks, but also be sure that you be that someone for others. May we also pledge to be citizens who also care for others. May we learn to be good neighbors, to be engaged citizens who don't just vote every two or four years, but citizens, humans, neighbors, Americans who daily seek the welfare and peace and common good of our neighborhood, community, environment, our cities, and our country, and the larger world. In other words, I want you to hear these words very well. This country needs you. I truly believe that. We need you. You enhance our communities and nation. You contribute to our great country. You strengthen our democracy. You enrich our American culture. We, as I shared earlier, my parents struggled with hunger and poverty. And one of the stories that I recall my father sharing is needing to pull out grass from the ground as a young boy and to consume it in order to satisfy his hunger pangs. This was one of the main reasons they pursued a better life for themselves. As Dr. Shogun shared, today I have the privilege of being the president of Bread for the World, one of the largest impactful Christian anti-hunger advocacy organizations in the country, seeking to end hunger both here in this nation, our nation, but also around the world. It might be sobering to share, but here in the United States, there are approximately nine million children that experience food insecurity around the world. Approximately 828 million people that experience hunger. It doesn't have to be this way. This matters deeply for me because as a Christ follower, and apologies as it's not my intent to sound preachy here, I believe that every human being is created in the image of God. Everyone has and deserves dignity and worth. This is my vow as a person of faith and also as an American citizen to advocate, to speak up so that your children, my children, their children, that all of our children can flourish and thrive. Please hear these words one more time. You matter, your stories matter, and your contributions matter to us. Congratulations to each of you, and God bless you. Thank you. Please welcome back to the stage the Honorable James E. Bosberg. Thank you so much, Reverend Cho, for those very inspiring remarks. And let me have a hat tip to my Alice Deal students, my neighborhood middle school. I live a few blocks from so thanks for doing the neighborhood proud, you guys. So I want to finish with just a few words. Aside from American Indians who are the true Native Americans, the United States is a nation of immigrants. Everyone's family came from somewhere else. So as of today, when you walk out of this amazing space and walk down the street or get on the metro, you are no longer any more of an immigrant.   I'll tell you a few quick facts about my family. My great-grandfather on my mother's side arrived at Ellis Island in New York from Hungary at the end of the 19th century with a sign around his neck instructing officials to send him to a small town in Illinois where he had relatives. He helped them pedal tin door-to-door. His son, my grandfather, ended up going to college at 15 and ultimately to Harvard Business School all in one generation after immigrating. Meanwhile, many of his relatives left behind in Hungary perished during the Holocaust of the Second World War. On my father's side, his immigrant ancestor came from the Netherlands. He jumped ship in New York Harbor and made his way to Buffalo, New York in the 1840s. One of his sons fought and died for the Union in the Civil War. His great-grandson, my father, would go on to Yale University and become a lawyer. And now their great-grandchildren can tell stories about them. Just as your children and your grandchildren and your great-grandchildren will tell stories of you and of this day that made their future lives in America possible. Congratulations and good luck to you, my fellow Americans. All rise! This concludes the ceremony. This honorable court is now adjourned. Everyone, please be seated during the presentation of certificates. American brothers and sisters, how are you? Now you've got to have proof that you're my American brother and sister, right? So how are we going to have it? So we're going to come up the first row, second, third. You're going to come all the way down the line. You're going to try to figure out an easier way. Work your way back around. You're going to stay in the order that you are. First row up. You ready, Simone? Brothers and sisters, rise, rise, rise! You want me to come this way? Follow me. Come this way. Don't follow me. Come this way, this way. Come down the line. Simone, please follow our volunteers to the reception room. And to see photos of today's event, please visit the link featured in your program. All rise for the exiting of the official party, please.


What's up everybody, it's Jason here for JaspysCaseBricks.com 2022 Penini Mosaic Football Six Box Half Case Break Package is number seven, just sold out. And again guys, all-card chip, fresh case. Number seven is, Jeremy got the last one with the Falcons and here's everybody that bought in. Good luck to everybody. So, here is the case. We're gonna rip it open and it is 12 boxes total. So, we'll see which six boxes will be used for this break. The next six will be for number eight. Which is also on the website that I'm most likely to have to be breaking on Monday. As pretty much done today. So again, one, two, three for the top four, five, six for the bottom really quick. Let's see which ones we choose here. Let's get a little roll. And it is a four. So, this time we're actually gonna do the bottom first. So, one, two, three for the top is going to be for number, let me write down here on this side over here though, eight. So guys, first box, it's got more. And a blue in it to win it, Otis Anderson for the Giants. Giants, of course, is Ryan to 99. Crystal Lave, Barry Sanders, Alec Pierce. Little swagger, Josh Allen. James Cook for the bills. Jeffrey with that one, that's the first auto. And a nice Dawson Knox to 15. Two of 15. And Taekwondo Thornton, the Patriots. Patriots, that is wrong. Jameson Williams, Aiden Hutchinson red and a nice Drake London blue chip silver. Alvin Austin, Cooper Cub blue to 99. All right, next box. King's got to catch up. And we got a Skyler Thompson rookie autograph for the Miami Dolphins going ahead. Tom Brady red, Crystal Lave introduction silver. All right, King's on a minute and a half to tie this game. Let go. And a Cade York, that's a white to 25 for the Browns. Browns is John. Brad Johnson white for the Bucks, going to Jeremy, 22 to 25. Josh Allen, Christian McCaffrey, Panthers, Jeremy Port, to 99. Showbound Walker. And a nice Aiden Hutchinson blue color match for the Lions, wrong.  Third box. All right, TCU still holding on, 21-16. And a bomb completed. Nice throw and catch. TCU's in scoring position already. All right, next one. Ankoan Bolden, nice to 49. That is for the Cardinals going to Jeremy, 29 out of 49. Straight fire, Tom Brady. And a Bill Melton for the Seahawks. Seahawks is Devon, Devon Cook color match purple.  Josh Allen, that's a sweet card right there. Bill's Jeffrey, 98 out of 99. Dozen Jefferson, to 99. For the Green Bay Packers, Simon. And Jelani Woods, that's for the Colts. Indianapolis Colts is Jeremy Hart. And a Cooper Cup gold. Look at that, very nice right there. Ram's going to Aaron. That's eight out of 10 gold. Najee Purple, to 49. Gerson Watson, Herschel Walker. Cowboys, going to have. All righty guys, two more boxes. Here guys, good luck. For the Dolphins, going to add, that's nice. Desmond Ritter, Hassan Haskin, to 49. Hunter Renfro, Ritter's going to mark to 99. Overdrive Blue to 99. Or a Campbell, that's Houston. Oh, there's going to the Tennessee Titans. Going to EA. The last box here, folks. Depending on what gets pulled here or not, I mean, the second half to be extremely, extremely loaded guys. I haven't seen a case hit yet. Not a bigger rookie auto yet. They get a gold. But actually, I shouldn't say a case hit, because I guess one of those out of 15s are considered one per case. But nothing like the razzle-dazzle glass or busted. Anything like that, I guess. Sam Williams, Cowboys. And a Zach Martin for the Cowboys. That's a white parallel to 25. Back to that cowboy autograph. So let's say that's going to be the autos for this box. Let's see if we can get some color, maybe a case hit or something. Nice. Aiden Hutchison. Look at that one right there. That's NFL debut, 725. Nice colors here for Ron and the Lions. Got a color match blue earlier, too, as well. J-Fire Russ. Center stage, E-Line Manning. The Falcons tonight, you know. All righty, folks. There you go. So I'll topple it, all these autos right now. Let me just show you them right here, the quick recap. So Zach Martin, Cowboys white to 25. Sam Williams for the Cowboys. Brandon Brown for the Raiders to 99 blue. Ricky Williams for the Dolphins. Jelani Woods for the Colts. Andre Ryzen for the Packers. Bo Melton for the Seahawks. Angkwon Bolton of 49 for the Cardinals. K-Dark white to 25 for the Browns. Skyler Thompson Otto for the Dolphins. Taekwon Thornton. Patriots, Dawson Knox to 15. James Cook autograph there for the Bills. Aiden Hutchinson, white parallel to 25 NFL debut. Cooper Cup, then a blue. True rookie there for Aiden Hutchinson. So I appreciate it, guys. Again, next one's in the store. Second half, Jaspeyscasebreak.com.


Okay, we're back. This is Think Tech with the closing show of the day, The 5 p.m. Rock. Welcome to Community Matters. I'm Jay Fiedel. Our show today is called the United States, Congress, Russia, and Fake News with Fred Opigard and Julian Gorbach of U.H. They're both assistant professors of things in and around journalism, huh? We're talking about literature and stuff they've written and thought about around fake news and also no news. This is a combination show. So welcome to the... We talk about Russia and... Oh, we started out with Russia. We first conceived of this. There is a certain amount of fake news about Russia you'll agree and also no news about Russia. I say no advisedly. It means that there should be news, but there isn't any news. Nobody's following the action. Welcome, Fred Opigard. Thank you for having me. Welcome, Julian Gorbach. Nice to have you here. Let's talk fake news in the first place. We have a new phenomenon about fake news. You've written about it. You have a paper, but I'm going to present the paper not too long. What have you discovered about it and studying it? Well, one thing I wanted to look at was just to try and understand how this kind of entered the bloodstream or the ecosystem, the public sphere recently. So that was the first thing I tried to figure out. When did we start talking about fake news and what is it exactly? Because it started to become this pinball word where it's just bouncing around. We're all talking about it, but everybody is using it in these different ways. Donald Trump has become a favorite term of his, but I think he means it in a very different way than some of the others. Then I actually started looking historically at it, and I used an article. There was a quick history of fake news in the Columbia Journalism Review, and I used it as kind of a foil. In other words, I kind of set it up and I wrote about a 25-page paper. I knocked the arguments of that Columbia Journalism Review paper down about history. I can elaborate, but you want me to continue? So basically regarding what it is, what fake news is, and when everybody started talking about it, BuzzFeed had published an article on October 20th, so just about two weeks before the election, where they looked at the amount of hyperpartisan websites, web pages that were posting news, quote-unquote, on Facebook. There were two sort of preliminary things that prompted this.  And the second was that- That is so scary, Julia. Well, you know, I mean, they're watching maybe CNN links or New York Times links, but one of the big phenomenons was this explosion. There was an article in The New York Times magazine previously, that August, about this explosion of hyperpartisan sites on the left and right. So BuzzFeed's initial story, actually, I was just looking at it again today, was kind of narrow. It just said, there's been this explosion of sites and an overwhelming majority of these hyperpartisan web pages have, well, it was, you know, on the right wing web pages, up to 40% of the stories were mostly false or completely false. So there was- there was somewhat of a muted reaction to this initially, but it certainly sort of showed something major happening on Facebook. Are you saying that hyper-sites are more likely to have fake news? Well, they just looked at the hyper-sites and found that of those sites, particularly on the right, 40% nearly half were full of BS. So then there was kind of a muted reaction. There were a couple of, like, think pieces about it, some chin stroking. Then Donald Trump got elected. And then two days after Donald Trump got elected, because of a bunch of internal discussion at Facebook and concerns, Mark Zuckerberg, I guess, felt compelled to come out and make a public announcement where he basically said, Facebook is not responsible for the election of Donald Trump. And what I found is, and you can see this in, I don't know if we have the graphic, but the, if you track the Google searches of the term fake news, but two days after he said that, there's this, you know, there was a whole bunch of news coverage and all the major outlets about fake news at that point, you know, basically reporting on his public denial. So, I mean, you know, he seems to have created a lot of the huge attention that it got, but from that point on, with the stories that followed, the news coverage about it and the, you know, the public interest and it just skyrocketed. I mean, that's really when, and also, the, February, I mean, November 16th, so about six days after Zuckerberg's denial, Buzzfeed published another story where they showed that fake news was radically outpacing real news for, so here on Think Tech. Yeah, so there's this, there's the, what does that tell us? So what that shows is, fake news is way down at the bottom in February through April, May, June, July, but by, by election day, of the top 20 stories, fake news has nearly nine million shares on social media, whereas real news has just over seven million, so a difference of two million shares. Why is that? I mean, it could it be that fake news is more appealing, more interesting, more provocative, and people want to consume fake news? Well, I mean, there's a couple of things going on, but I think the major thing is that, to put it simply, it tells people what they want to hear. And then I think there's another part of this, and again, this is some insight that I got out, you know, my method is to look at history, other people do social science or whatever, but definitely one of the insights I got from looking at the history of it was that, you know, a lot of things are too good to be true.   Well, you know, you can't make it up. And you probably can't, you can't find any real stuff that's interesting, and that reinforces what you already believe. Okay, the big question is, why do people do that? Well, because they're, they're, I mean, looking at the history of fake news, one of the things you find is that whenever people were going out, like, like literary people, people like Mark Twain, and they were, they were producing fake news, they were always amazed at how much people would just believe the most unbelievable nonsense. This one going every minute.  But even with the, with the ones where you're like, that's ridiculous. People are just amazed that these things take off like wildfire. And that's particularly true when you tell somebody something that they really want to believe and that reinforces what they already believe. You tell them a really good tale that reinforces the opinions they already share. So this has always existed to some degree, at least in this country, maybe in the world. But what we have now is a, you know, a huge increase. Look at that chart. A spontaneous increase all of a sudden. And I have to say it's connected with whatever happens in Trump. It's a Trump phenomenon. Is this, is this the new normal? Is this the way it's going to be? I'd say we have crossed that threshold a long time ago where people could self-publish whatever they want and distribute it worldwide. And that's really part of what's happening here. It used to be, you would need a million dollar printing press or a big radio tower or you'd need some kind of expensive equipment and infrastructure to pull something like this off. Nowadays you need a computer and an internet connection. Well, you know there's a point there I think. If I have to buy a printing press even in Gutenberg days, it's going to cost me some money. I have to be a responsible citizen and raise the money. I have to have investment capital. I have to have a physical place. I can't be a fly by night because I could lose that if I don't, you know, print real news or at least arguably real news. But now there's no barrier to entry. In fact, most people already own the equipment to generate fake news without putting a penny extra into doing that. And this somehow this changes it because there's no, there's no barrier, there's no burden. You want to make, you want to fool around? You can fool around at no expense. You don't have anything to lose. You know, there's a, someone we look to a lot named Richard Hornick who's, he's a big advocate. He spoke here. I met him, yeah. Yeah, he's a big advocate of news literacy. He's based in Stony Brook, but he spends winners here. Very articulate smart guy in this stuff and a very veteran journalist. And he identified four things where the internet has really in danger or the 21st century world of digital media has, has really presented challenges for democracies. And his four things were one, what you guys just mentioned, the fact that it's very easy to put something up on the internet that looks really authoritative and professional. You know, the, the Denver Guardian quote unquote newspaper, which didn't exist, one of those major fake news phenomena. The other points that he made is he made four. So the other points were that people can filter out what they don't want now. So they can, you know, they can create their own bubble that they want to exist in. And, you know, they're basically any facts that they're allergic to, they can, they could, they never have to worry about them anymore because they've, they even create these filters on the internet and the internet will help you do that through its search algorithms and everything else. The third point that it made is that the gatekeepers, you know, the role that the New York Times and the Washington Post and all those other folks had is, is gone. And so now you've got people that have to kind of make their own decisions about stuff that what should be legitimate news and what's fake news, whereas editors used to do that job. And you would trust to do that job. Yeah. And the fourth issue is just the sheer amount of information that just floods over us every day.  And you're going to probably find some sites that'll tell you if you want to, if you want to find that kind of affirmation. So the question I put to both of you is, how do we deal with this? How do we get to the truth now? Because it seems like the truth is more elusive now and there are more people out there trying to obfuscate the truth actively, intentionally, or for really bad purposes. How do we get, you and I have talked about this before. Yeah, I think it's not, the answer isn't a better algorithm by Facebook. The answer is better media literacy and people becoming more responsible for their media where they have to seek out and understand their sources and the publications and the journalists behind it. If we are going to try to fix this problem with the computer, we're going to fail over and over again. It really goes into a deep cultural place, I think, where we have to start taking our own personal responsibility for what we ingest and what we spread and figure out ways to root out the bad stuff. How do we do that? Is that going back to school or something? Yeah, I mean, these, there's now these, these new efforts, like the one that Richard's involved in at Stonybrook and there's also the newsliteracyproject.org because arguably one of the major issues is if we get them at college and we start trying to teach news literacy, is it already too late? Like maybe the education... Don't answer that. Don't answer that because we're going to have a break now. When we come back from the break, I am going to be dedicated to finding the answers. Hi, I'm Tim Apachello. I'm the host of Moving Hawaii Forward. A show dedicated to transportation issues and traffic issues here on Oahu. Join us every other Tuesday at 12 noon and as we discuss how we try to solve our traffic headaches, not to not to include just the rail, but transit and carpooling and everything in between. So join us every other Tuesday, Moving Hawaii Forward. Thank you. Hi, I'm Cheryl Crozier Garcia. I'm the host of Working Together on Think Tech Hawaii. It's a program where we discuss the impact of change on workers, employers, and the economy. So join us every other Tuesday from 4 o'clock to 4.30 we're live in the studio on Working Together in Think Tech Hawaii. Take care. See you soon. Bye. We're here with Brett Opengard and Julian Gorbach, both sister professors and in and around journalism, I can say. We're talking about fake news, also no news. And I want to tell you when I was in school in New York they taught us to double fold the New York Times. They taught us how to read a paper. They taught us how to look down the columns and look for the good stuff and we had to find it and all that. There was a study where they actually did this formally in school. Do they do that now? No. Although I guess if you double fold you could read it while it was in the commute. Yeah, right, in the subway. It was all about the subway. The subway is an essential part of this whole discussion. As far as our students know, there isn't a physical copy of the paper. I'm not sure if they've seen one. So you're saying is high school too late, is grade school too early, is college, when do you learn critical thinking to ascertain the read and the check? When do you learn how to press for the truth? We teach children to read books. One, two, whatever. As you're reading, talk to them about what do you like about this, what do you think makes this valid, whatever it is. Whatever you can put into a child's language.  It really is, as Julian said, I think too late by the time we get them as freshmen or sophomores to dramatically change their habits. We can incrementally change their habits and we can prompt them through reward systems like read the newspaper every day, we'll give you a quiz, that kind of thing. But as soon as you take the thumb off, then they'll be back to their same habits. I really think this is something we have to go deeper than we have in the past. You're painting a very tough picture. It's sort of like the issue of the Constitution. If you don't teach the country the Constitution, next time you look the Constitution is falling apart. If you don't teach them about reading the chaff and truth and otherwise, by the time they're at whatever age is critical, it may be too late. As university professors, we also kind of have to teach literacy. We have to teach students how to write and how to be good just basic readers. And what we've encountered, I know in my own personal experience, pretty early in my teaching career, I was teaching in South Louisiana, which has really serious literacy deficits, but you have it pretty much all over the country. It's not unique to South Louisiana. Is there a political will to fix that? You read to your children before they go to bed at night. We have a lot of overburdened single moms and a lot of poverty. They're plopping them in front of TV sets. Generations to generations. There are millions of people in the country who have never gone through this process. You're developing at that age, you're developing so quickly and so dramatically that if you miss a year or two development when you're three to five years old, you're only five.  You're optimistic or pessimistic? Unless we get on a dime about it, I'm pessimistic. I don't think there's been an honest discussion about... There are honest discussions in some circles about early childhood development and education, but not enough. Not where it needs to happen. Not in say areas where there's huge numbers of single moms that are struggling with just trying to pay the bills. It gets even more difficult. This is something that came up in our discussion. Maybe it was in the break about how the technology changes the need, changes the way, the methodology of looking for truth because of all that material out there. And we haven't learned how to deal with that. It's a runaway with us. We haven't kept up with it. We need to make a special effort to deal with the new kind of literacy that's involved in the 21st century electronic age. That's a big point that like, for example, when I've talked about the Stony Brook University Project, the Center for News Literacy, which they're trying to do this sort of spread this internationally. They've got programs going on all over Asia and Europe and all over the country where they're trying to catch up. But the analogy they use is with reading. The analogy they use is when the printing press was first introduced by Johann Gutenberg in the 1400s, that basically everybody had to learn how to read in order for the real power of that technology back then to really take hold. Why doesn't that sustain us with the electronic age? I mean, are we saying here that reading then and reading now is a whole different thing? Well, I mean, what we're saying, we're using an analogy between literal literacy and digital literacy. Because digital literacy means learning how to recognize that there are sources and news stories. And being able to sift through what's a good source, what's a bad source, what kind of a source you're looking at, what a source is in the first place, paying attention to the fact that sources matter. All of this stuff is something that when a lot of people get on the internet, they're not educated people. I mean, I'm constantly surprised that people I know that are quite educated don't pay attention to the source of the information that they're looking at. It's easy to get confused. But let's go to the second point we want to discuss. We talked about fake news, the problem, possible solutions. What about the no news? And this puts the spotlight on the press. Because sometimes the press doesn't catch it. They run after the news. They're into the next cycle. They want to keep everybody charged up with something. So they maybe forget something they could have. And what comes to mind in my mind is Jeff Sessions lied in his consent hearing. And nothing ever happened to it. He managed to get by that by saying that he would recuse himself in anything involving the Russian investigation. But sorry, that doesn't solve the problem of lying to Congress. You know, clearly shown in the New York Times. So, you know, the press hasn't really covered it. We haven't heard about it again. They're chasing the next cycle. We have no news on that and so many other things that we've talked about. So what about that? How does the citizen deal with the fact that the press has a short memory and is looking forward rather than back? I think part of it is you have to understand the strategy of diversion that's taking place where if we keep dropping mother of all bombs on different, you know, places every day, of course the journalist has to go there and there are only so many journalists around. There's only so much of a news hole and there's only so much airtime. So a lot of that just gets put on the back burner. And if you saw the movie Spotlight, there's a scene in there where the towers go down in 9-11 and the Spotlight team has taken off the Boston Globe story of the Catholic priest for a significant amount of time. I can't remember for months or a year. But they did come back to it. And I think that's a lot of what's going to happen here. There's just so many starting points. We won't come back to all of it, but we'll come back to the important parts, I think. And I'm also optimistic maybe more than others about our ability to catch up with this technology. I think we have to see ourselves in the very early phases of this evolution. We're not 600 years in. We're just a couple decades in. So I imagine going forward, our society and our different systems of education will catch up with that and we'll have something new to complain about then. Your example of Sessions is, I saw a stunning example of how that issue's been overlooked when I was listening to National Public Radio's show from the East Coast on Point. And a caller called in and brought up that very point of what happened to Jeff Sessions and there were three journalists in the round table. It was the week in the news that they were doing that. And Tom Ashbrook. And one by one all four of them said, oh yeah, the Russiagate story of the Russian hack. Yeah, no, we're going to be on that. And that's going to be, and not one of them picked up on the fact that he was talking about the fact that Jeff Sessions had allegedly lied under oath and has suffered no consequences. That his recusal managed to get him out of it. All of them just, you know, whether it's distraction or whether it's that Washington Press Corps national news habit of kind of repeating what the person next to you says, because that's what keeps you in the job as everybody's on the same page. And there tends to be this incredible group think that takes on. But all of them missed it. It was just amazing to listen to the show and be like, you know, wanting to call in, you're never going to get through. You know, the New York Times has a special editor called the public editor. And he's supposed to protect the rights of the reader and all that. They could design another editor, call it the look-back editor. The one who figures it out that what we missed here and we got distracted and we chased the news cycle. But you know, we have to attend to what was unsolved before. Wouldn't that be good? That would be perfect. You know, one thing that has never, I've never heard mention of national media since we're obviously national media here. Sure, we're national right here. Yeah, we're on the internet. Yeah, exactly. It is, whatever happened to like, you know, telling, don't they have to say, I'll tell the truth, the whole truth and nothing but the truth? They do. Is that the same standard if you're attorney general for the rest of us or is there a lower standard for them when they have to testify? That's what you can get away with. Yeah. Because people start saying, well, he meant to say something else or whatever. But it seems to me they have to take that whole truth, etc. Oh, yeah, we got to get liberal about this kind of thing. You mentioned early on, Brett, that we lost X number of coal mining jobs in this country in recent past, but we lost a lot more jobs in journalism. And that means that the journalism infrastructure is understaffed. What do you think? Yeah, a big issue for the president has been to bring back the coal jobs. There's been a lot of discourse about how great those jobs were and how people had family legacies and working in the coal mines. But when you look at the raw numbers of coal jobs lost, it's actually quite a bit less than newspaper jobs lost. And I've yet to see a single story about somebody trying to bring those back through some kind of federal intervention. And I think that's something that we just have to deal with as a society, that we've lost something really valuable to us, and we have to come up with a new plan for bringing it back. And this idea of rehiring the coal people, bringing back the coal plants, let's have that kind of initiative for newspapers. The stakes are so high. They are the nation itself. We cannot afford not to be informed. I saw a headline that the entire coal industry hires as many people as Arby's. And the Washington Post, that was the headline. Well, we have one minute to close, you guys. What's the coalescing? Let me ask you first, Yuli, and then you can close, Brett. What do we do here? What does it look like? What's the can we achieve a new credibility in the people who report to us? Well, I don't know about new credibility in the people who report. I think there's some major stories that get overlooked, like our ecosystem is collapsing according to scientists, but we only talk about climate change, whereas that is only one of the really crisis level insults to our environment that really is going to affect our lives. And as far as fake news goes, fact checking which there was a lot of during the election, there's a lot of social science shows it's not effective. So I think news literacy is really the hope that if we educate people that way there will be, you know, our system will work better. You mean it will survive, don't you? We'll have a healthier democracy or we'll retain a democracy. This reminds me of how physical education and music and various other arts, the philosophy that's all taken out of the schools and then what are we left with? And media literacy to me is one of those things that because most of our life is mediated, most of our life is lived through a screen it should be an imperative that we learn how to do that better from all levels of education. Imperative. Let's leave it there. Brett Overgaard and Julien Gorbach, thank you so much for coming on. We'll do this again. Thank you.