1 00:00:00,150 --> 00:00:03,660 - So I want introduce you to the next presentation. 2 00:00:03,660 --> 00:00:06,243 It's called OpenCola, The AntiSocial Network. 3 00:00:07,290 --> 00:00:09,060 Please give a big hand to John, here. 4 00:00:09,060 --> 00:00:12,643 His first time DEFCON and I wanna make him feel welcome. 5 00:00:12,643 --> 00:00:15,087 (attendees applauding) 6 00:00:15,087 --> 00:00:16,590 And hopefully you'll learn something 7 00:00:16,590 --> 00:00:17,423 and you'll enjoy this. 8 00:00:17,423 --> 00:00:18,256 Thanks. 9 00:00:18,256 --> 00:00:19,980 - Great. - Here's John. 10 00:00:19,980 --> 00:00:22,170 - All right, thank you very much. 11 00:00:22,170 --> 00:00:24,030 Hi there, thank you for coming to the talk. 12 00:00:24,030 --> 00:00:26,550 I was supposed to do this with Oxblood Ruffin. 13 00:00:26,550 --> 00:00:27,750 Unfortunately, he could not travel. 14 00:00:27,750 --> 00:00:30,200 So for better or for worse, you're stuck with me. 15 00:00:31,170 --> 00:00:33,030 So I thought I would start. 16 00:00:33,030 --> 00:00:34,710 The talk today is mainly on an alternative 17 00:00:34,710 --> 00:00:36,000 to existing social media, 18 00:00:36,000 --> 00:00:37,800 but I thought I'd start with introducing myself 19 00:00:37,800 --> 00:00:38,850 'cause it's pretty relevant 20 00:00:38,850 --> 00:00:40,800 to the whole path that brought me here. 21 00:00:44,012 --> 00:00:46,710 I was born and raised in Toronto. 22 00:00:46,710 --> 00:00:49,380 I got my first computer when I was 10 years old. 23 00:00:49,380 --> 00:00:50,490 I got a Commodore VIC-20, 24 00:00:50,490 --> 00:00:53,850 which really sparked my interest in computing. 25 00:00:53,850 --> 00:00:57,090 A couple years later, I got a Commodore 64 26 00:00:57,090 --> 00:00:59,460 and then got heavily into the BBS world, 27 00:00:59,460 --> 00:01:02,433 which was a big precursor to the internet. 28 00:01:03,360 --> 00:01:06,030 It was a world where people were donating their time 29 00:01:06,030 --> 00:01:08,430 and their money and whatnot to build communities, 30 00:01:08,430 --> 00:01:11,670 which is really what I would love to see more of today. 31 00:01:11,670 --> 00:01:14,190 But I spent a bunch of time hacking around in that world 32 00:01:14,190 --> 00:01:15,720 with supporting BBSs and so on, 33 00:01:15,720 --> 00:01:17,670 and so that's really where I came from. 34 00:01:19,470 --> 00:01:22,560 My first job out of university 35 00:01:22,560 --> 00:01:24,090 was at the original openCola, 36 00:01:24,090 --> 00:01:25,590 which maybe some of you remember. 37 00:01:25,590 --> 00:01:27,390 It was 20 years ago though. 38 00:01:27,390 --> 00:01:29,400 This was a company that was founded by Corey Doctorow 39 00:01:29,400 --> 00:01:31,020 and a couple of other folks. 40 00:01:31,020 --> 00:01:34,700 It was meant to be a company that... 41 00:01:34,700 --> 00:01:36,120 It was an open source company 42 00:01:36,120 --> 00:01:37,980 that was supposed to facilitate sharing 43 00:01:37,980 --> 00:01:39,570 and building communities and so on. 44 00:01:39,570 --> 00:01:42,030 By the time I got there, Corey had left, 45 00:01:42,030 --> 00:01:43,880 and it became a closed source company 46 00:01:44,910 --> 00:01:46,230 and it was very, very different, 47 00:01:46,230 --> 00:01:48,480 but I was there building all the search technology. 48 00:01:48,480 --> 00:01:49,830 So here is a little example 49 00:01:49,830 --> 00:01:52,200 of what it looked like at the time. 50 00:01:52,200 --> 00:01:55,200 It was a Windows XP application. 51 00:01:55,200 --> 00:01:57,330 At the top left, there's a search box. 52 00:01:57,330 --> 00:01:58,800 You enter a query. 53 00:01:58,800 --> 00:02:00,930 At the time, Google was not super dominant. 54 00:02:00,930 --> 00:02:02,040 It was just getting there. 55 00:02:02,040 --> 00:02:04,350 And so, when you wanted to search the web, 56 00:02:04,350 --> 00:02:05,880 you had to search multiple sites 57 00:02:05,880 --> 00:02:07,710 just to find good results. 58 00:02:07,710 --> 00:02:09,480 So this would do that for you automatically. 59 00:02:09,480 --> 00:02:11,460 It would search across a various number of sites. 60 00:02:11,460 --> 00:02:12,660 It would give you a list of results. 61 00:02:12,660 --> 00:02:14,550 You can see in the top pane. 62 00:02:14,550 --> 00:02:15,870 You can scroll through those results. 63 00:02:15,870 --> 00:02:17,220 If you found ones that you liked, 64 00:02:17,220 --> 00:02:18,420 you'd mark them as relevant. 65 00:02:18,420 --> 00:02:19,740 It would rescore the folder, 66 00:02:19,740 --> 00:02:21,080 everything in it for you. 67 00:02:21,080 --> 00:02:23,100 It would help you draw attention to things 68 00:02:23,100 --> 00:02:24,990 that would be useful for you, 69 00:02:24,990 --> 00:02:26,570 and then it would generate new queries. 70 00:02:26,570 --> 00:02:28,290 It would do some light semantic analysis 71 00:02:28,290 --> 00:02:29,550 and generate new queries, 72 00:02:29,550 --> 00:02:32,040 and continually add information to that folder. 73 00:02:32,040 --> 00:02:33,720 And so, you could have as many of these folders 74 00:02:33,720 --> 00:02:34,593 as you wanted. 75 00:02:36,450 --> 00:02:38,280 You were also connected to other peers 76 00:02:38,280 --> 00:02:39,450 and so when peers would go off 77 00:02:39,450 --> 00:02:41,490 and find interesting things and save them, 78 00:02:41,490 --> 00:02:42,990 you could leverage all of that. 79 00:02:42,990 --> 00:02:43,980 Your queries would go to them 80 00:02:43,980 --> 00:02:45,780 and you'd get their results as well. 81 00:02:47,250 --> 00:02:48,960 So that was a ton of fun for me. 82 00:02:48,960 --> 00:02:50,410 One of my favorite jobs ever. 83 00:02:51,390 --> 00:02:52,980 So what's happened since? 84 00:02:52,980 --> 00:02:55,350 Well for myself, I bounced around. 85 00:02:55,350 --> 00:02:56,250 I did a couple startups 86 00:02:56,250 --> 00:02:58,530 with two of the other founders of openCola. 87 00:02:58,530 --> 00:03:00,270 I eventually ended up at Microsoft. 88 00:03:00,270 --> 00:03:01,950 I worked in identity for a bit, 89 00:03:01,950 --> 00:03:03,660 learned a bit about security. 90 00:03:03,660 --> 00:03:06,630 I then worked on a knowledge web team, 91 00:03:06,630 --> 00:03:09,120 and learned a ton about semantic web 92 00:03:09,120 --> 00:03:11,250 and recommendation systems. 93 00:03:11,250 --> 00:03:12,270 And then after that, 94 00:03:12,270 --> 00:03:14,340 I worked at Netflix for 10 years where I bounced around 95 00:03:14,340 --> 00:03:16,980 a lot of the different personalization teams. 96 00:03:16,980 --> 00:03:18,270 Building all of the algorithms 97 00:03:18,270 --> 00:03:19,740 that produced the Netflix experience. 98 00:03:19,740 --> 00:03:22,350 The homepage, the ordering of videos, and so on. 99 00:03:22,350 --> 00:03:23,183 And at the end, 100 00:03:23,183 --> 00:03:24,570 I was actually running the whole organization. 101 00:03:24,570 --> 00:03:27,180 So I have a lot of experience with recommender systems 102 00:03:27,180 --> 00:03:28,350 and being in a big company, 103 00:03:28,350 --> 00:03:29,640 trying to balance user needs 104 00:03:29,640 --> 00:03:31,983 and the company's needs as well. 105 00:03:33,540 --> 00:03:35,280 Obviously, in that time, a lot has changed in the world. 106 00:03:35,280 --> 00:03:37,170 Google is the dominant search engine. 107 00:03:37,170 --> 00:03:40,650 We've gone through Friendster, MySpace, 108 00:03:40,650 --> 00:03:42,330 Facebook, Twitter, Instagram. 109 00:03:42,330 --> 00:03:44,130 All of these things have happened, 110 00:03:44,130 --> 00:03:48,930 and along with them have come some pretty big tech problems. 111 00:03:48,930 --> 00:03:51,297 We've seen a large amount of information siloing. 112 00:03:51,297 --> 00:03:55,650 And so, all these sites benefit by keeping you as members 113 00:03:55,650 --> 00:03:57,240 and so they don't really want to unlock your data 114 00:03:57,240 --> 00:03:59,160 and let you use it in multiple places. 115 00:03:59,160 --> 00:04:00,750 So if I accumulate things on Facebook 116 00:04:00,750 --> 00:04:02,220 and accumulate things on Twitter, 117 00:04:02,220 --> 00:04:03,330 they're stuck in those silos. 118 00:04:03,330 --> 00:04:04,950 I can't really do anything with that data. 119 00:04:04,950 --> 00:04:06,870 I have to use those sites, 120 00:04:06,870 --> 00:04:08,780 and that serves these companies. 121 00:04:08,780 --> 00:04:11,553 It doesn't serve me or any other end users super well. 122 00:04:13,080 --> 00:04:13,913 Secondly. 123 00:04:15,510 --> 00:04:18,150 The majority of these companies are profit companies 124 00:04:18,150 --> 00:04:20,550 that really make their money through advertising, 125 00:04:20,550 --> 00:04:21,810 and that means they make more money 126 00:04:21,810 --> 00:04:22,920 if you stay on their site. 127 00:04:22,920 --> 00:04:26,670 And so, the algorithms are really tuned to grab you in 128 00:04:26,670 --> 00:04:29,580 and keep you on their site as much as possible. 129 00:04:29,580 --> 00:04:31,920 And again, this isn't necessarily in your best interest. 130 00:04:31,920 --> 00:04:33,450 You're being shown things that keep you there. 131 00:04:33,450 --> 00:04:34,680 They may not be things that, actually, 132 00:04:34,680 --> 00:04:36,080 are the best things for you. 133 00:04:37,650 --> 00:04:40,860 There has been endless amounts of privacy abuse. 134 00:04:40,860 --> 00:04:43,590 I think the favorite story that I've linked to here 135 00:04:43,590 --> 00:04:45,270 is a John Oliver clip that's talking 136 00:04:45,270 --> 00:04:48,180 about the amount of data that data brokers have access to, 137 00:04:48,180 --> 00:04:50,100 and that you can purchase with a credit card. 138 00:04:50,100 --> 00:04:51,690 And in many cases, this data 139 00:04:51,690 --> 00:04:55,230 is data that would require the government a warrant to get. 140 00:04:55,230 --> 00:04:57,090 And sometimes, they even just go and buy the data 141 00:04:57,090 --> 00:04:58,560 from the brokers if they can't get warrants. 142 00:04:58,560 --> 00:05:01,083 So it's a pretty crazy situation. 143 00:05:02,400 --> 00:05:03,570 We've also seen a huge amount 144 00:05:03,570 --> 00:05:05,670 of corporate concentration of wealth and power. 145 00:05:05,670 --> 00:05:09,570 There are very few companies at the top 146 00:05:09,570 --> 00:05:11,120 that are making a lot of money. 147 00:05:13,260 --> 00:05:15,480 Because of that, they can use their power and their wealth 148 00:05:15,480 --> 00:05:17,910 to continue to be anti-competitive 149 00:05:17,910 --> 00:05:20,190 and to continue their advantage. 150 00:05:20,190 --> 00:05:21,780 There's a great post link here 151 00:05:21,780 --> 00:05:24,990 to the antitrust case against Facebook. 152 00:05:24,990 --> 00:05:27,450 Which reminded me, it's about how Facebook's evolution, 153 00:05:27,450 --> 00:05:28,530 that I had totally forgotten about. 154 00:05:28,530 --> 00:05:29,790 They used to in the early days, 155 00:05:29,790 --> 00:05:33,870 be really advocates for user privacy and for the end user. 156 00:05:33,870 --> 00:05:35,190 And they got to a point, 157 00:05:35,190 --> 00:05:38,310 that as pretty much any for-profit company's gonna get to, 158 00:05:38,310 --> 00:05:41,460 where they have to maximize profit and in order to do so, 159 00:05:41,460 --> 00:05:43,803 they had to stop representing the end user. 160 00:05:45,210 --> 00:05:46,410 Misinformation, for me, 161 00:05:46,410 --> 00:05:48,390 it's been huge since 2016. 162 00:05:48,390 --> 00:05:50,400 Just trying to think about ways, potentially, 163 00:05:50,400 --> 00:05:52,050 to solve these problems, 164 00:05:52,050 --> 00:05:56,670 and putting out information that is not accurate 165 00:05:56,670 --> 00:05:58,530 and distorts people's perceptions 166 00:05:58,530 --> 00:05:59,790 serves lots of different reasons. 167 00:05:59,790 --> 00:06:03,450 It could be to distort a political opinion 168 00:06:03,450 --> 00:06:06,227 and it could also be simply to try and make ads. 169 00:06:06,227 --> 00:06:07,980 Things that people put in information 170 00:06:07,980 --> 00:06:09,240 that attracts attention. 171 00:06:09,240 --> 00:06:10,083 You click on it. 172 00:06:11,040 --> 00:06:12,483 That helps people sell ads. 173 00:06:13,950 --> 00:06:16,320 Related polarization. 174 00:06:16,320 --> 00:06:17,280 Strong emotion. 175 00:06:17,280 --> 00:06:19,290 It gets a lot of people's attention. 176 00:06:19,290 --> 00:06:21,060 Particularly, negative emotion. 177 00:06:21,060 --> 00:06:23,280 And so the algorithms that these companies use 178 00:06:23,280 --> 00:06:24,810 to figure out how to keep your attention, 179 00:06:24,810 --> 00:06:28,260 they're really amplifying a lot of the negative emotion 180 00:06:28,260 --> 00:06:29,850 which leads to polarization. 181 00:06:29,850 --> 00:06:31,500 It leads to us feeling that we're further apart 182 00:06:31,500 --> 00:06:32,850 than maybe we actually are. 183 00:06:34,170 --> 00:06:35,550 There's stifled innovation. 184 00:06:35,550 --> 00:06:38,220 These companies will build what only makes profit for them. 185 00:06:38,220 --> 00:06:39,900 So there may be lots of great features 186 00:06:39,900 --> 00:06:41,370 that would be super innovative 187 00:06:41,370 --> 00:06:42,750 but you aren't gonna see them 188 00:06:42,750 --> 00:06:45,870 unless the company can make some money from it. 189 00:06:45,870 --> 00:06:47,580 And then lastly, 190 00:06:47,580 --> 00:06:50,490 in order to manipulate networks and manipulate discourse, 191 00:06:50,490 --> 00:06:52,740 there's been a huge rise in bots. 192 00:06:52,740 --> 00:06:54,930 So automated systems that pretend to be people 193 00:06:54,930 --> 00:06:56,910 that will manipulate the internet structure 194 00:06:56,910 --> 00:06:58,350 to try and trick Google, 195 00:06:58,350 --> 00:07:00,600 or manipulate discourse on these social media platforms 196 00:07:00,600 --> 00:07:01,830 in order to try and get more eyes 197 00:07:01,830 --> 00:07:04,403 on the types of stories that these folks are interested in. 198 00:07:05,400 --> 00:07:08,790 So if we step back though, and really ask ourselves, 199 00:07:08,790 --> 00:07:09,990 what are these sites offering? 200 00:07:09,990 --> 00:07:12,780 It's actually not all that much 201 00:07:12,780 --> 00:07:15,840 and it's actually not all that hard to build. 202 00:07:15,840 --> 00:07:18,840 Up here, I've got arguably the three, 203 00:07:18,840 --> 00:07:20,670 sort of, top social media sites today. 204 00:07:20,670 --> 00:07:23,100 Facebook, Twitter, and Instagram. 205 00:07:23,100 --> 00:07:24,930 Facebook, it's really just a feed. 206 00:07:24,930 --> 00:07:28,440 Every post in it has just an image, some description. 207 00:07:28,440 --> 00:07:30,540 It's a bit of a structured item. 208 00:07:30,540 --> 00:07:32,280 And then you can do a few things with that. 209 00:07:32,280 --> 00:07:36,150 Like, you can like, you can share, and so on. 210 00:07:36,150 --> 00:07:37,250 You can add a comment. 211 00:07:38,100 --> 00:07:39,660 On Twitter, it's pretty much the same thing. 212 00:07:39,660 --> 00:07:42,450 It's just an image with some text on it 213 00:07:42,450 --> 00:07:47,070 and you can comment, retweet, like, or share. 214 00:07:47,070 --> 00:07:48,970 Instagram, pretty much the same thing. 215 00:07:50,400 --> 00:07:51,960 So if you take a step back and you look at it. 216 00:07:51,960 --> 00:07:53,730 Well, what are you really getting as an end user? 217 00:07:53,730 --> 00:07:56,250 You're getting the ability to indirectly interact 218 00:07:56,250 --> 00:07:58,170 with your friends, your family, and your community, 219 00:07:58,170 --> 00:08:00,600 and you can perform a fairly small set of actions. 220 00:08:00,600 --> 00:08:03,360 Across all the sites that I'm thinking about, 221 00:08:03,360 --> 00:08:07,380 it's really just post, like, rate, comment, tag, and share. 222 00:08:07,380 --> 00:08:09,960 And I'd include even things like Amazon and YouTube, 223 00:08:09,960 --> 00:08:12,060 which may not be considered directly social media 224 00:08:12,060 --> 00:08:15,870 but they're places that fit this pattern very well. 225 00:08:15,870 --> 00:08:17,730 And what you get back is a feed 226 00:08:17,730 --> 00:08:20,587 but in order to get access to all of this, 227 00:08:20,587 --> 00:08:22,500 you're really building... 228 00:08:22,500 --> 00:08:24,660 We're really allowing all of these other problems to exist. 229 00:08:24,660 --> 00:08:26,913 You also get all the aforementioned problems. 230 00:08:29,400 --> 00:08:30,600 So... 231 00:08:30,600 --> 00:08:34,830 I found a great quote in the antitrust case against Facebook 232 00:08:34,830 --> 00:08:36,300 that really just asked the question 233 00:08:36,300 --> 00:08:38,640 of why is it that in a country that's so paranoid 234 00:08:38,640 --> 00:08:41,250 about government or corporate surveillance. 235 00:08:41,250 --> 00:08:43,863 Why is this really the only option that we have? 236 00:08:44,910 --> 00:08:47,340 And I would say it's probably because people that go 237 00:08:47,340 --> 00:08:49,020 and want to build these type of companies 238 00:08:49,020 --> 00:08:50,100 have two things in mind. 239 00:08:50,100 --> 00:08:51,060 They either wanna make money 240 00:08:51,060 --> 00:08:52,590 or they want to control what's going on, 241 00:08:52,590 --> 00:08:54,030 and I think that's sort of very different 242 00:08:54,030 --> 00:08:55,950 than the types of companies that have been built up 243 00:08:55,950 --> 00:08:58,230 to give us these products today. 244 00:08:58,230 --> 00:08:59,700 So for me, fundamentally, the question 245 00:08:59,700 --> 00:09:03,240 is "How can we have a more trustworthy internet?" 246 00:09:03,240 --> 00:09:04,950 And I do not think that profit seekers 247 00:09:04,950 --> 00:09:07,380 can really offer a solution to this. 248 00:09:07,380 --> 00:09:09,660 For example, there are certain things they just don't do. 249 00:09:09,660 --> 00:09:10,890 They did not and could not 250 00:09:10,890 --> 00:09:13,800 really have produced the internet in the first place. 251 00:09:13,800 --> 00:09:15,840 It was too risky, too long run. 252 00:09:15,840 --> 00:09:18,750 All of that was based off of public funding to start 253 00:09:18,750 --> 00:09:19,890 and then, at some point, 254 00:09:19,890 --> 00:09:22,200 was taken over by private companies. 255 00:09:22,200 --> 00:09:24,210 But they did create all the problems we've seen. 256 00:09:24,210 --> 00:09:26,310 So I don't really feel like I would trust them 257 00:09:26,310 --> 00:09:28,020 to solve these problems. 258 00:09:28,020 --> 00:09:29,040 So I think we need to start 259 00:09:29,040 --> 00:09:30,360 with just a different incentive model 260 00:09:30,360 --> 00:09:31,320 which is rather than thinking 261 00:09:31,320 --> 00:09:33,420 about how to make money solving the problem. 262 00:09:33,420 --> 00:09:34,800 This is a problem we're solving, 263 00:09:34,800 --> 00:09:37,260 so let's just figure out how we should solve this problem 264 00:09:37,260 --> 00:09:38,463 from principles first. 265 00:09:40,530 --> 00:09:43,200 So in terms of trust, then. 266 00:09:43,200 --> 00:09:44,910 I've enumerated, at least what I think, 267 00:09:44,910 --> 00:09:46,773 is a minimum set of principles. 268 00:09:48,000 --> 00:09:50,610 Any system that's built to try and solve these problems, 269 00:09:50,610 --> 00:09:52,170 I believe, needs to be transparent. 270 00:09:52,170 --> 00:09:53,490 You need to know what it's doing 271 00:09:53,490 --> 00:09:54,720 and why it's doing what it's doing. 272 00:09:54,720 --> 00:09:57,930 So you can choose to use it based on what it's doing 273 00:09:57,930 --> 00:09:59,523 and you can detect misuse. 274 00:10:01,740 --> 00:10:04,260 The system also needs to provide for accountability 275 00:10:04,260 --> 00:10:06,180 if somebody abuses the system. 276 00:10:06,180 --> 00:10:07,590 There has to be some mechanism 277 00:10:07,590 --> 00:10:09,600 to punish that person or that entity 278 00:10:09,600 --> 00:10:11,673 in order to disincentivize that misuse. 279 00:10:14,550 --> 00:10:16,200 As well, you need some personal control. 280 00:10:16,200 --> 00:10:17,910 Your information, your data. 281 00:10:17,910 --> 00:10:19,980 You should know what's happening to that data. 282 00:10:19,980 --> 00:10:21,240 You should know where it's going, 283 00:10:21,240 --> 00:10:22,800 who's seeing it and how it's being used, 284 00:10:22,800 --> 00:10:25,170 whether it's for your benefit or not. 285 00:10:25,170 --> 00:10:27,450 And then lastly, but obviously not least, 286 00:10:27,450 --> 00:10:29,070 you need some degree of security. 287 00:10:29,070 --> 00:10:30,060 You shouldn't be able to pretend 288 00:10:30,060 --> 00:10:31,590 to be somebody that you're not in this system, 289 00:10:31,590 --> 00:10:33,210 and you shouldn't be able to access information 290 00:10:33,210 --> 00:10:34,803 in an unauthorized fashion. 291 00:10:36,990 --> 00:10:40,350 So if we look at these principles, though, 292 00:10:40,350 --> 00:10:42,270 a closed source for-profit model 293 00:10:42,270 --> 00:10:46,740 generally will minimize each one of these principles. 294 00:10:46,740 --> 00:10:48,270 In the security sense, you know, 295 00:10:48,270 --> 00:10:50,070 you might be able to argue that some of these companies 296 00:10:50,070 --> 00:10:51,873 do a good job of securing your data. 297 00:10:52,800 --> 00:10:53,730 Maybe, from hackers. 298 00:10:53,730 --> 00:10:55,050 Although, you're probably gonna know a lot more 299 00:10:55,050 --> 00:10:56,310 about this than I do. 300 00:10:56,310 --> 00:10:58,800 In the very least, they're just gonna sell your data 301 00:10:58,800 --> 00:10:59,730 if it's profitable for them. 302 00:10:59,730 --> 00:11:02,340 So that's clearly not a trustworthy behavior. 303 00:11:02,340 --> 00:11:05,430 So from my perspective, this really strongly suggests 304 00:11:05,430 --> 00:11:07,953 a free open source distributed software model. 305 00:11:10,440 --> 00:11:13,410 Before I dive into how it all works under the hood. 306 00:11:13,410 --> 00:11:14,850 I'll give you a little demo to show you 307 00:11:14,850 --> 00:11:16,887 what has been built so far in OpenCola. 308 00:11:16,887 --> 00:11:19,620 And so, this is really just a re-envisioning 309 00:11:19,620 --> 00:11:22,470 of what was originally in the product 310 00:11:22,470 --> 00:11:25,020 and the ideas that came from the original openCola. 311 00:11:25,020 --> 00:11:26,820 It's gonna be slightly different. 312 00:11:26,820 --> 00:11:28,500 It's very similar to the existing social media 313 00:11:28,500 --> 00:11:29,460 but there are a couple things in it 314 00:11:29,460 --> 00:11:31,260 that we do a bit differently, 315 00:11:31,260 --> 00:11:32,093 but just keep in mind 316 00:11:32,093 --> 00:11:33,600 that this is just a reference application. 317 00:11:33,600 --> 00:11:35,010 Fundamentally, this is a platform 318 00:11:35,010 --> 00:11:36,630 and the idea of it being open source 319 00:11:36,630 --> 00:11:39,263 is that you can build whatever you want on top of this. 320 00:11:42,060 --> 00:11:44,010 So I'll switch over to the demo, 321 00:11:44,010 --> 00:11:45,123 which is visible. 322 00:11:47,280 --> 00:11:48,390 Okay. 323 00:11:48,390 --> 00:11:52,020 So let's look at setting up the application. 324 00:11:52,020 --> 00:11:55,080 I've skipped over just the install. 325 00:11:55,080 --> 00:11:57,720 There's a server that you can run. 326 00:11:57,720 --> 00:12:00,450 What we'll see is the use of a browser extension. 327 00:12:00,450 --> 00:12:03,120 I've skipped over the install, just for the sake of time, 328 00:12:03,120 --> 00:12:06,900 but I'll show you how to set it up once it's been installed. 329 00:12:06,900 --> 00:12:08,610 With your browser extension. 330 00:12:08,610 --> 00:12:11,250 Basically, it allows you to take a few actions. 331 00:12:11,250 --> 00:12:12,630 Again, this could be extendable, 332 00:12:12,630 --> 00:12:15,090 but I've just got a small set here for now. 333 00:12:15,090 --> 00:12:16,440 The little green bubble on the end 334 00:12:16,440 --> 00:12:17,610 is just a status indicator. 335 00:12:17,610 --> 00:12:18,810 Green means everything's okay. 336 00:12:18,810 --> 00:12:20,010 Yellow means it's doing something, 337 00:12:20,010 --> 00:12:22,650 and red means something bad happened. 338 00:12:22,650 --> 00:12:23,700 There's a little disc icon 339 00:12:23,700 --> 00:12:26,430 that allows you to save the site that you're on. 340 00:12:26,430 --> 00:12:28,080 There is a thumbs up icon 341 00:12:28,080 --> 00:12:29,580 that allows you to like the site you're on. 342 00:12:29,580 --> 00:12:31,200 And then there's a trust action, 343 00:12:31,200 --> 00:12:32,640 which I'll talk a lot more about later 344 00:12:32,640 --> 00:12:35,880 and is something I think novel for social media. 345 00:12:35,880 --> 00:12:37,560 And the last thing is there's a little search icon 346 00:12:37,560 --> 00:12:38,460 that lets you go to your feed 347 00:12:38,460 --> 00:12:41,063 and then you can search things that you've interacted with. 348 00:12:44,280 --> 00:12:46,440 So let's just go over to the feed, right now. 349 00:12:46,440 --> 00:12:47,980 Unsurprisingly, it's empty 350 00:12:48,930 --> 00:12:51,270 and we will go into the peer view. 351 00:12:51,270 --> 00:12:54,180 At this point, you're the only person in the system. 352 00:12:54,180 --> 00:12:57,180 So this peer is you and you can go and set up your name 353 00:12:57,180 --> 00:12:58,500 and an image for yourself. 354 00:12:58,500 --> 00:13:00,000 So I'm gonna pretend this is Nola 355 00:13:00,000 --> 00:13:02,010 who is the original openCola mascot. 356 00:13:02,010 --> 00:13:02,973 Put an image in. 357 00:13:04,410 --> 00:13:06,780 And then, there are three other fields 358 00:13:06,780 --> 00:13:08,190 that are set for you automatically. 359 00:13:08,190 --> 00:13:11,550 You get a globally unique OpenCola ID. 360 00:13:11,550 --> 00:13:12,990 You get a public key which is used 361 00:13:12,990 --> 00:13:16,290 to secure your e-communication 362 00:13:16,290 --> 00:13:17,940 and make sure that you can validate 363 00:13:17,940 --> 00:13:19,680 that it came from the person you thought it did. 364 00:13:19,680 --> 00:13:20,820 And then, there's an address. 365 00:13:20,820 --> 00:13:22,380 Right now, this is an HTTP address 366 00:13:22,380 --> 00:13:24,060 'cause it's a local machine. 367 00:13:24,060 --> 00:13:26,110 I'll explain a bit more about that later. 368 00:13:32,430 --> 00:13:33,810 Okay, so now we're set up. 369 00:13:33,810 --> 00:13:36,410 Let's go and take a look at what posting looks like. 370 00:13:37,800 --> 00:13:41,160 So in order to do some posting. 371 00:13:41,160 --> 00:13:42,030 When you're browsing the web, 372 00:13:42,030 --> 00:13:43,530 you can take some action on the pages. 373 00:13:43,530 --> 00:13:45,510 This is where we're slightly different. 374 00:13:45,510 --> 00:13:46,500 I'll show you in a second 375 00:13:46,500 --> 00:13:48,540 how you can create more organic posts. 376 00:13:48,540 --> 00:13:50,460 But the posts that we're looking at here, 377 00:13:50,460 --> 00:13:51,990 everything is very information-centric. 378 00:13:51,990 --> 00:13:53,910 So when people interact with the same resource, 379 00:13:53,910 --> 00:13:55,020 all of that gets combined. 380 00:13:55,020 --> 00:13:56,550 So you can see what everybody in your network 381 00:13:56,550 --> 00:14:00,120 is thinking and talking about on that particular item. 382 00:14:00,120 --> 00:14:01,920 So we can start here and we can go and say 383 00:14:01,920 --> 00:14:04,170 that we like the DEFCON page, 384 00:14:04,170 --> 00:14:05,520 and then we can go and say 385 00:14:05,520 --> 00:14:08,343 that we want to save a Wikipedia page. 386 00:14:09,870 --> 00:14:11,640 If we go back to our feed, 387 00:14:11,640 --> 00:14:14,130 notice that now we have those two items 388 00:14:14,130 --> 00:14:16,080 that we interacted with are sitting in our feed. 389 00:14:16,080 --> 00:14:19,020 This feed is just reverse chronologically ordered. 390 00:14:19,020 --> 00:14:20,820 It's done some convenient extraction 391 00:14:20,820 --> 00:14:23,670 of a text description and an image for you. 392 00:14:23,670 --> 00:14:26,490 Under each post, it indicates who posted it 393 00:14:26,490 --> 00:14:28,590 and then there's actions that you can take, 394 00:14:28,590 --> 00:14:30,780 and also that you can see all the activity of your peers. 395 00:14:30,780 --> 00:14:33,030 So you can resave stuff. 396 00:14:33,030 --> 00:14:34,980 You can resave and see activity of saves. 397 00:14:34,980 --> 00:14:37,140 You can like, you can tag, 398 00:14:37,140 --> 00:14:39,640 you can comment, and you can edit the post itself. 399 00:14:40,740 --> 00:14:42,750 One of the nice things that it does for you, as well, 400 00:14:42,750 --> 00:14:45,180 is that when you actually interact through the web browser, 401 00:14:45,180 --> 00:14:46,950 it's actually taking that whole page 402 00:14:46,950 --> 00:14:49,500 and it's storing it as a single page archive. 403 00:14:49,500 --> 00:14:51,810 So not only can you just click on the link 404 00:14:51,810 --> 00:14:53,370 and see the current page, but it'll show you... 405 00:14:53,370 --> 00:14:54,210 What I'll show you right now 406 00:14:54,210 --> 00:14:56,100 is that you can click on the archive link. 407 00:14:56,100 --> 00:14:56,933 And if you notice, 408 00:14:56,933 --> 00:14:58,800 this is being served off your local computer. 409 00:14:58,800 --> 00:15:01,500 So you can go back and see exactly what you interacted with 410 00:15:01,500 --> 00:15:03,600 and you can do that without being tracked. 411 00:15:12,270 --> 00:15:15,360 Okay, and so this is the more traditional social media post. 412 00:15:15,360 --> 00:15:17,730 This is a bit of an export form right now. 413 00:15:17,730 --> 00:15:18,990 I'm gonna make it a bit simpler. 414 00:15:18,990 --> 00:15:21,840 You can edit any of the fields that go into the template 415 00:15:21,840 --> 00:15:23,880 that gets rendered in the feed. 416 00:15:23,880 --> 00:15:25,290 Normally in social media, 417 00:15:25,290 --> 00:15:26,123 you're often just wanting 418 00:15:26,123 --> 00:15:27,510 to type something in the description. 419 00:15:27,510 --> 00:15:29,670 So if you've got something that you wanna share, 420 00:15:29,670 --> 00:15:31,530 you can just put it in the description box 421 00:15:31,530 --> 00:15:33,000 and when you save that, 422 00:15:33,000 --> 00:15:35,370 it just creates a relatively empty entry 423 00:15:35,370 --> 00:15:36,600 with your image in it 424 00:15:36,600 --> 00:15:38,850 and that's sort of the more traditional path. 425 00:15:42,690 --> 00:15:45,660 So it's great to have your own personal repository. 426 00:15:45,660 --> 00:15:47,820 I find it super useful just to keep track of things. 427 00:15:47,820 --> 00:15:50,220 But of course, you wanna be able to connect to your friends 428 00:15:50,220 --> 00:15:52,380 and leverage all the things that they're doing as well. 429 00:15:52,380 --> 00:15:55,890 So we'll take a look at how you connect two peers together. 430 00:15:55,890 --> 00:15:57,903 First, we need a peer. 431 00:15:58,830 --> 00:16:01,440 So luckily I have one pre-created here. 432 00:16:01,440 --> 00:16:03,000 Clippy, 433 00:16:03,000 --> 00:16:06,150 and Clippy already has some existing posts. 434 00:16:06,150 --> 00:16:08,430 And these two, Clippy and Nola want to connect, 435 00:16:08,430 --> 00:16:11,280 and so what they each do is they go into their peer view. 436 00:16:13,710 --> 00:16:15,960 Basically, there's a token that's given to them 437 00:16:15,960 --> 00:16:18,393 that they basically exchange with each other. 438 00:16:22,080 --> 00:16:23,280 And so I'll just mention 439 00:16:23,280 --> 00:16:25,410 that this adds a bit of friction to connecting 440 00:16:25,410 --> 00:16:27,480 that doesn't exist in existing social media. 441 00:16:27,480 --> 00:16:28,313 And as you'll see you later, 442 00:16:28,313 --> 00:16:29,460 this is actually pretty valuable. 443 00:16:29,460 --> 00:16:32,190 It actually provides some great functionality 444 00:16:32,190 --> 00:16:33,600 on the other side. 445 00:16:33,600 --> 00:16:37,680 You do this token exchange out of band of the application. 446 00:16:37,680 --> 00:16:39,120 You can use whatever you're comfortable with. 447 00:16:39,120 --> 00:16:40,530 It's not hyper critical. 448 00:16:40,530 --> 00:16:41,820 But if you want to be super secure, 449 00:16:41,820 --> 00:16:42,930 you could use something like Signal 450 00:16:42,930 --> 00:16:44,430 to send that token to a friend. 451 00:16:44,430 --> 00:16:45,570 But the point is that you only connect 452 00:16:45,570 --> 00:16:46,950 to people that you actually know. 453 00:16:46,950 --> 00:16:47,783 That you verified. 454 00:16:47,783 --> 00:16:48,616 You know this person. 455 00:16:48,616 --> 00:16:50,260 So you've talk to them out of band. 456 00:16:51,660 --> 00:16:53,040 Once you add them, if you want to, 457 00:16:53,040 --> 00:16:55,500 you could edit their name or their image 458 00:16:55,500 --> 00:16:58,300 and see that person how you want to see it on your side. 459 00:16:59,580 --> 00:17:00,990 And now, you're connected. 460 00:17:00,990 --> 00:17:03,450 And if we go back and look at the individual feeds, 461 00:17:03,450 --> 00:17:05,500 we'll see that they are now synchronized. 462 00:17:08,550 --> 00:17:11,280 And on Clippy's side, Clippy can go then and interact 463 00:17:11,280 --> 00:17:13,380 with the posts that were posted by Nola. 464 00:17:13,380 --> 00:17:14,523 Add in a comment. 465 00:17:17,820 --> 00:17:19,800 Maybe like a post. 466 00:17:19,800 --> 00:17:23,790 And if we go back over to Nola's feed and refresh, 467 00:17:23,790 --> 00:17:27,150 notice all of those changes took effect immediately. 468 00:17:27,150 --> 00:17:30,660 And again, it's reverse chronologically sorted. 469 00:17:30,660 --> 00:17:32,560 The most recent activity's at the top. 470 00:17:36,990 --> 00:17:38,640 So now you're connected. 471 00:17:38,640 --> 00:17:40,320 You've got all your data. 472 00:17:40,320 --> 00:17:42,330 You probably also wanna be able to search that data. 473 00:17:42,330 --> 00:17:43,410 That's something that's somewhat different. 474 00:17:43,410 --> 00:17:45,060 Again, we're a bit more content-centric. 475 00:17:45,060 --> 00:17:46,740 So the idea is that you share this information 476 00:17:46,740 --> 00:17:47,573 and then it should be really easy 477 00:17:47,573 --> 00:17:48,600 for you to find afterwards. 478 00:17:48,600 --> 00:17:50,820 You've got a single repository 479 00:17:50,820 --> 00:17:51,750 of the things that you care about 480 00:17:51,750 --> 00:17:53,950 across all the sites that you interact with. 481 00:17:54,870 --> 00:17:56,460 So searching is pretty straightforward. 482 00:17:56,460 --> 00:17:58,650 Just enter your query in the query box. 483 00:17:58,650 --> 00:17:59,970 Here we entered writing. 484 00:17:59,970 --> 00:18:03,660 What we got back was the one writing result that made sense. 485 00:18:03,660 --> 00:18:05,460 Notice that this looks exactly like the feed, 486 00:18:05,460 --> 00:18:07,980 and the feed and the search results are totally unified. 487 00:18:07,980 --> 00:18:10,050 Everything you can do in one, you can do in the other. 488 00:18:10,050 --> 00:18:11,300 So it's super convenient. 489 00:18:12,240 --> 00:18:14,310 So you can go down and say, edit the search result. 490 00:18:14,310 --> 00:18:16,680 If you didn't like the description that it had extracted, 491 00:18:16,680 --> 00:18:17,550 you can edit it. 492 00:18:17,550 --> 00:18:19,830 This changes it for you and anybody that you share it with 493 00:18:19,830 --> 00:18:21,360 but anybody who'd already has saved it, 494 00:18:21,360 --> 00:18:23,070 it won't change it for them. 495 00:18:23,070 --> 00:18:24,450 And then, you can like the item. 496 00:18:24,450 --> 00:18:25,653 You can add a tag on. 497 00:18:30,930 --> 00:18:32,160 And if you go back to the main feed, 498 00:18:32,160 --> 00:18:34,980 once again, everything has been updated 499 00:18:34,980 --> 00:18:36,390 and you see that at the top of your feed. 500 00:18:36,390 --> 00:18:39,093 And so would Nola, on her side. 501 00:18:41,100 --> 00:18:43,620 We didn't specifically build a mobile version 502 00:18:43,620 --> 00:18:45,150 but just to show you what it looks like right now. 503 00:18:45,150 --> 00:18:48,180 It's actually pretty functional and it looks pretty good. 504 00:18:48,180 --> 00:18:49,230 The one challenge on mobile 505 00:18:49,230 --> 00:18:51,180 is that we don't have the plugin 506 00:18:51,180 --> 00:18:52,140 and so we had to figure out how 507 00:18:52,140 --> 00:18:54,153 to make it easy to add content in. 508 00:18:55,170 --> 00:18:56,550 That's actually pretty straightforward. 509 00:18:56,550 --> 00:18:58,740 You just use the share functionality in your browser. 510 00:18:58,740 --> 00:19:00,360 You copy the link. 511 00:19:00,360 --> 00:19:02,490 You post it into the description. 512 00:19:02,490 --> 00:19:04,140 And if it's the only thing you've put in your feed, 513 00:19:04,140 --> 00:19:05,610 you've posted the description, 514 00:19:05,610 --> 00:19:08,310 it's gonna do the same parsing that it did before 515 00:19:08,310 --> 00:19:12,270 and show you a result that the description 516 00:19:12,270 --> 00:19:13,920 and the title parsed out for you. 517 00:19:18,090 --> 00:19:21,630 Okay, and then the last thing I'm gonna show, 518 00:19:21,630 --> 00:19:23,220 talk about, is just the persistent web. 519 00:19:23,220 --> 00:19:25,560 And so this is just to sort of underscore the fact 520 00:19:25,560 --> 00:19:27,150 that you're not just bookmarking things. 521 00:19:27,150 --> 00:19:29,550 You're also maintaining an archive 522 00:19:29,550 --> 00:19:31,530 of the things that you've interacted with. 523 00:19:31,530 --> 00:19:33,300 So I was showing this to a friend 524 00:19:33,300 --> 00:19:35,700 and I just typed in the search Corey, 525 00:19:35,700 --> 00:19:38,670 and up came four results. 526 00:19:38,670 --> 00:19:40,860 Three of them looked like they made a ton of sense to me. 527 00:19:40,860 --> 00:19:42,720 They either were articles written by Corey 528 00:19:42,720 --> 00:19:44,190 or referred to him. 529 00:19:44,190 --> 00:19:46,170 I had recently read a book called The Dawn of Everything 530 00:19:46,170 --> 00:19:47,040 and was a bit confused. 531 00:19:47,040 --> 00:19:48,660 I didn't know why that would pop up. 532 00:19:48,660 --> 00:19:50,880 So I went over to the Wikipedia page. 533 00:19:50,880 --> 00:19:52,500 Searched for it. 534 00:19:52,500 --> 00:19:54,120 The name wasn't there. 535 00:19:54,120 --> 00:19:55,567 So I went back and said, 536 00:19:55,567 --> 00:19:57,150 "Okay, well, what was actually indexed?" 537 00:19:57,150 --> 00:19:59,250 So I went into the archive version instead, 538 00:19:59,250 --> 00:20:00,723 and I did a search for Corey. 539 00:20:01,710 --> 00:20:04,440 And lo and behold, the original version 540 00:20:04,440 --> 00:20:07,290 that I interacted with actually directly mentioned Corey. 541 00:20:08,280 --> 00:20:11,370 If you're interacting with pages that are changing, 542 00:20:11,370 --> 00:20:12,660 you have a record of the things 543 00:20:12,660 --> 00:20:14,760 at the time that you interacted with them. 544 00:20:16,410 --> 00:20:17,243 Okay. 545 00:20:18,540 --> 00:20:23,540 Let me bounce back to the slides. 546 00:20:26,070 --> 00:20:26,903 Okay. 547 00:20:28,500 --> 00:20:32,130 So I thought I'd just give a sort of a brief explanation 548 00:20:32,130 --> 00:20:33,840 as to how this was all put together. 549 00:20:33,840 --> 00:20:35,970 It's actually pretty simple. 550 00:20:35,970 --> 00:20:39,270 What you just saw was the browser extension in the web UI. 551 00:20:39,270 --> 00:20:42,780 There is a main API that's running the server 552 00:20:42,780 --> 00:20:44,057 and that was written in Kotlin. 553 00:20:44,057 --> 00:20:47,853 Kotlin is sort of a more functional and fun version of Java. 554 00:20:48,780 --> 00:20:50,820 You can use all of the existing open source libraries 555 00:20:50,820 --> 00:20:52,140 with it and it just seemed like a, 556 00:20:52,140 --> 00:20:54,480 sort of, open source friendly choice. 557 00:20:54,480 --> 00:20:56,700 But the meat of OpenCola 558 00:20:56,700 --> 00:20:59,520 is actually all of these components at the bottom. 559 00:20:59,520 --> 00:21:01,800 So the first one is the entity store. 560 00:21:01,800 --> 00:21:04,890 This is where all the metadata is stored 561 00:21:04,890 --> 00:21:06,510 about the posts that you're interacting with. 562 00:21:06,510 --> 00:21:09,240 So it has all the links to the images, the descriptions, 563 00:21:09,240 --> 00:21:11,550 and everything that you've interacted with. 564 00:21:11,550 --> 00:21:13,500 We have a SQLite version of this 565 00:21:13,500 --> 00:21:14,820 and a Postgres version of this, 566 00:21:14,820 --> 00:21:16,920 so you can run it in process as a library 567 00:21:16,920 --> 00:21:17,753 or if you choose, 568 00:21:17,753 --> 00:21:20,640 you could host your entity store somewhere else 569 00:21:20,640 --> 00:21:22,323 or at least scale it differently. 570 00:21:23,160 --> 00:21:24,030 There's a file store 571 00:21:24,030 --> 00:21:26,130 which stores all of the archive information 572 00:21:26,130 --> 00:21:28,110 and it will store everything. 573 00:21:28,110 --> 00:21:30,300 That if you're sharing larger sets of files or whatever, 574 00:21:30,300 --> 00:21:32,793 it will store any actual binary files. 575 00:21:34,080 --> 00:21:35,880 It is a hash-based store. 576 00:21:35,880 --> 00:21:37,653 So it's globally addressable. 577 00:21:38,790 --> 00:21:41,760 It stores things locally on your machine 578 00:21:41,760 --> 00:21:43,740 but it is a very simple interface. 579 00:21:43,740 --> 00:21:45,630 And you can imagine sharing one, 580 00:21:45,630 --> 00:21:47,520 and putting one up remotely if you wanted to. 581 00:21:47,520 --> 00:21:50,370 So that you could be a bit more efficient with it. 582 00:21:50,370 --> 00:21:52,650 The search index is just built based off of Lucene 583 00:21:52,650 --> 00:21:54,150 which is an open source search engine. 584 00:21:54,150 --> 00:21:55,920 It's super scalable. 585 00:21:55,920 --> 00:21:58,740 There's a Lucene, one that users direct to the library. 586 00:21:58,740 --> 00:22:00,570 So you can run it as a single process. 587 00:22:00,570 --> 00:22:02,310 But again, you can run it in Solr as well 588 00:22:02,310 --> 00:22:03,810 which is a wrap around Lucene 589 00:22:03,810 --> 00:22:07,050 and can scale to fairly massive situations, 590 00:22:07,050 --> 00:22:09,420 and you can run it remotely if you want to. 591 00:22:09,420 --> 00:22:11,160 And then the last piece is the network provider 592 00:22:11,160 --> 00:22:13,890 and this allows the nodes to communicate 593 00:22:13,890 --> 00:22:15,270 with each other. 594 00:22:15,270 --> 00:22:18,210 Currently we are actually communicating over HTTP 595 00:22:18,210 --> 00:22:20,490 but we're using ZeroTier 596 00:22:20,490 --> 00:22:22,980 which is an open source VPN solution 597 00:22:22,980 --> 00:22:25,470 that allows us to make it look like remote peers 598 00:22:25,470 --> 00:22:26,520 are on your own network, 599 00:22:26,520 --> 00:22:29,190 which is convenient for directly communicating 600 00:22:29,190 --> 00:22:31,350 and being able to view other people's feeds. 601 00:22:31,350 --> 00:22:32,940 We're definitely looking for better ways to do it. 602 00:22:32,940 --> 00:22:34,980 We're stretching what it was meant to do. 603 00:22:34,980 --> 00:22:38,010 And we want really secure connections between people 604 00:22:38,010 --> 00:22:40,170 and it's not really meant for setting up 605 00:22:40,170 --> 00:22:42,030 as many VPNs as you have friends. 606 00:22:42,030 --> 00:22:44,333 So we're looking for a different way to do that. 607 00:22:46,134 --> 00:22:47,520 At the core of all this, though. 608 00:22:47,520 --> 00:22:49,140 Really the core of OpenCola 609 00:22:49,140 --> 00:22:51,000 is just this data representation. 610 00:22:51,000 --> 00:22:55,200 In the database, everything is stored as a fact. 611 00:22:55,200 --> 00:22:56,700 These are not informational facts. 612 00:22:56,700 --> 00:22:58,080 These are database facts. 613 00:22:58,080 --> 00:23:01,350 And so in a post, the description has a fact. 614 00:23:01,350 --> 00:23:02,853 The title has a fact. 615 00:23:04,170 --> 00:23:06,030 Basically, every fact is just a two pull. 616 00:23:06,030 --> 00:23:07,800 It has these components. 617 00:23:07,800 --> 00:23:08,910 It has an authority ID 618 00:23:08,910 --> 00:23:11,460 which is essentially who is asserting the facts. 619 00:23:11,460 --> 00:23:13,200 That would be my user ID. 620 00:23:13,200 --> 00:23:14,640 There is an entity ID 621 00:23:14,640 --> 00:23:15,900 which is what you're talking about. 622 00:23:15,900 --> 00:23:17,280 It could be a resource or a file 623 00:23:17,280 --> 00:23:19,470 or another person in the network. 624 00:23:19,470 --> 00:23:20,370 There is an attribute 625 00:23:20,370 --> 00:23:22,800 which is what property of that entity you're talking about. 626 00:23:22,800 --> 00:23:23,850 The value. 627 00:23:23,850 --> 00:23:26,070 There's an operation about that indicates whether 628 00:23:26,070 --> 00:23:27,900 or not you're asserting or retracting the facts. 629 00:23:27,900 --> 00:23:29,670 And then, there's a transaction ID. 630 00:23:29,670 --> 00:23:31,680 So these facts get grouped. 631 00:23:31,680 --> 00:23:34,380 When you take an action, that generates a set of facts. 632 00:23:34,380 --> 00:23:36,270 They get grouped into a transaction. 633 00:23:36,270 --> 00:23:37,560 That transaction is signed 634 00:23:37,560 --> 00:23:40,260 and that's the unit that's communicated between nodes. 635 00:23:43,350 --> 00:23:45,480 This is really extendable. 636 00:23:45,480 --> 00:23:46,920 This is the type of thing that you probably wouldn't 637 00:23:46,920 --> 00:23:48,510 wanna run in a big enterprise database. 638 00:23:48,510 --> 00:23:50,460 But for the user scale that we're talking about, 639 00:23:50,460 --> 00:23:52,680 this is a really great choice. 640 00:23:52,680 --> 00:23:54,960 And then another just fun fact about this database 641 00:23:54,960 --> 00:23:57,330 is because of the way that it models data, 642 00:23:57,330 --> 00:23:59,130 it's actually always accreting data. 643 00:23:59,130 --> 00:24:00,330 It's not deleting old data. 644 00:24:00,330 --> 00:24:01,560 And so if you wanted to go back 645 00:24:01,560 --> 00:24:03,630 and look at what your feed looked like five years ago, 646 00:24:03,630 --> 00:24:05,670 you could actually just generate a query. 647 00:24:05,670 --> 00:24:07,530 Just slightly modify the query to get the feed 648 00:24:07,530 --> 00:24:09,230 and it would produce that for you. 649 00:24:10,470 --> 00:24:12,330 Okay great, so you've seen the demo. 650 00:24:12,330 --> 00:24:15,090 You've seen a bit of how the architecture looks like. 651 00:24:15,090 --> 00:24:16,410 So how does this help? 652 00:24:16,410 --> 00:24:18,630 I listed a bunch of problems at the beginning. 653 00:24:18,630 --> 00:24:21,150 Well, in terms of the information silos. 654 00:24:21,150 --> 00:24:22,320 Your data is your data. 655 00:24:22,320 --> 00:24:24,870 It goes wherever you want it to go. 656 00:24:24,870 --> 00:24:26,220 You're sharing it with your friends. 657 00:24:26,220 --> 00:24:27,780 In terms of whoever you connect with, 658 00:24:27,780 --> 00:24:30,150 it's automatically replicated to your friends. 659 00:24:30,150 --> 00:24:31,710 Your friends can see your data right now 660 00:24:31,710 --> 00:24:32,610 on social media sites. 661 00:24:32,610 --> 00:24:34,140 So that's nothing new. 662 00:24:34,140 --> 00:24:35,700 There's some nice features of that though. 663 00:24:35,700 --> 00:24:36,780 If you lose all your data, 664 00:24:36,780 --> 00:24:37,807 you can go back to your friends and say, 665 00:24:37,807 --> 00:24:39,990 "Hey, can you repopulate my data store for me?" 666 00:24:39,990 --> 00:24:41,850 So you've got a backup of your data. 667 00:24:41,850 --> 00:24:43,560 But the point is that you can take that data 668 00:24:43,560 --> 00:24:44,400 and put it wherever you want. 669 00:24:44,400 --> 00:24:45,510 And we imagine situations 670 00:24:45,510 --> 00:24:46,590 where you might actually want to share it 671 00:24:46,590 --> 00:24:48,570 with applications that you trust, 672 00:24:48,570 --> 00:24:50,610 and you can take that trust away if you want to, 673 00:24:50,610 --> 00:24:53,373 but to get larger features in the future. 674 00:24:54,270 --> 00:24:56,820 In terms of the attention economy. 675 00:24:56,820 --> 00:24:58,740 There's no advertising in the system. 676 00:24:58,740 --> 00:25:00,870 It's possible that your friend may try to advertise to you, 677 00:25:00,870 --> 00:25:04,140 but there's no advertising component to this whatsoever 678 00:25:04,140 --> 00:25:07,740 and so there's really no incentive to keep you in the site. 679 00:25:07,740 --> 00:25:09,090 And from my perspective, 680 00:25:09,090 --> 00:25:10,320 we're not doing anything to bug you. 681 00:25:10,320 --> 00:25:13,110 We're not SMSing you all the time 682 00:25:13,110 --> 00:25:14,310 to tell you if you've got new content. 683 00:25:14,310 --> 00:25:15,930 It's up to you if you want to come and use the site, 684 00:25:15,930 --> 00:25:16,763 if it's useful. 685 00:25:18,630 --> 00:25:20,550 In terms of privacy abuse. 686 00:25:20,550 --> 00:25:21,390 Your data is yours 687 00:25:21,390 --> 00:25:23,880 and you should share it with people that you trust, 688 00:25:23,880 --> 00:25:26,430 and you now are actually in the power to do that. 689 00:25:26,430 --> 00:25:28,260 You can take it, you can revoke it. 690 00:25:28,260 --> 00:25:32,790 I think there's an opportunity potentially here at the point 691 00:25:32,790 --> 00:25:34,680 that there are potentially applications out there 692 00:25:34,680 --> 00:25:37,743 that want to use your data and aggregate it in larger sets, 693 00:25:39,390 --> 00:25:41,490 you could potentially think about creating 694 00:25:41,490 --> 00:25:43,950 end service agreements versus end user agreements. 695 00:25:43,950 --> 00:25:45,357 Meaning that, since I have all my data 696 00:25:45,357 --> 00:25:47,957 and it's valuable and it's across every single site. 697 00:25:49,456 --> 00:25:52,410 If a service wants to use my data, 698 00:25:52,410 --> 00:25:54,660 you could conceivably create some sort of licensing 699 00:25:54,660 --> 00:25:56,700 such that you say you're only allowed to use it 700 00:25:56,700 --> 00:25:58,110 for these reasons, 701 00:25:58,110 --> 00:26:01,020 which is very different than the world is today. 702 00:26:01,020 --> 00:26:03,540 So it's just something that we'd like to explore. 703 00:26:03,540 --> 00:26:05,850 In terms of concentration of wealth and power. 704 00:26:05,850 --> 00:26:08,790 This just provides you with an opportunity to move away. 705 00:26:08,790 --> 00:26:11,430 So to the degree that people do move away, 706 00:26:11,430 --> 00:26:14,760 you take away the big company's power. 707 00:26:14,760 --> 00:26:16,800 And I'll talk a bit later about how we're trying 708 00:26:16,800 --> 00:26:17,880 to make that easier to do 709 00:26:17,880 --> 00:26:18,997 'cause of course the big question is, 710 00:26:18,997 --> 00:26:20,427 "Well, will people do this?" 711 00:26:22,980 --> 00:26:24,510 In terms of misinformation. 712 00:26:24,510 --> 00:26:26,940 Every piece of data that comes to you in the network 713 00:26:26,940 --> 00:26:28,290 comes from somebody. 714 00:26:28,290 --> 00:26:29,340 It's not random. 715 00:26:29,340 --> 00:26:31,560 It comes from somebody. 716 00:26:31,560 --> 00:26:34,920 If you see an article, say, from the Washington Herald. 717 00:26:34,920 --> 00:26:36,480 Let's pretend that's not a real site 718 00:26:36,480 --> 00:26:38,520 and it's saying this incredible story 719 00:26:38,520 --> 00:26:39,427 and you go and look at it and say, 720 00:26:39,427 --> 00:26:40,680 "Well, wait a sec, this comes 721 00:26:40,680 --> 00:26:43,470 from some weird bot farm that I'm aware of." 722 00:26:43,470 --> 00:26:44,730 You can mark that story. 723 00:26:44,730 --> 00:26:46,830 The point of that trust button in the toolbar 724 00:26:46,830 --> 00:26:49,470 was that you can mark a story as untrustworthy. 725 00:26:49,470 --> 00:26:51,210 That signals to your friends 726 00:26:51,210 --> 00:26:53,400 that if they ever come across that, 727 00:26:53,400 --> 00:26:55,590 they probably shouldn't take it seriously. 728 00:26:55,590 --> 00:26:58,950 And it can also be used to penalize throughout the network 729 00:26:58,950 --> 00:27:01,110 at wherever that information came from. 730 00:27:01,110 --> 00:27:02,940 And obviously, you can also just turn off people 731 00:27:02,940 --> 00:27:04,470 if they abuse your trust too much. 732 00:27:04,470 --> 00:27:05,550 But the point is that once you 733 00:27:05,550 --> 00:27:07,230 get all of this trust data in the network, 734 00:27:07,230 --> 00:27:08,280 you potentially can actually 735 00:27:08,280 --> 00:27:10,170 build some interesting algorithms 736 00:27:10,170 --> 00:27:13,473 that help you to be able to sort of navigate things 737 00:27:13,473 --> 00:27:15,123 that you haven't seen before. 738 00:27:17,010 --> 00:27:18,570 So anyway. 739 00:27:18,570 --> 00:27:21,060 To be clear, people can still post fake news 740 00:27:21,060 --> 00:27:22,860 but you are a moderator yourself. 741 00:27:22,860 --> 00:27:25,660 You can control whether or not it replicates beyond you. 742 00:27:26,723 --> 00:27:28,410 In terms of polarization. 743 00:27:28,410 --> 00:27:30,990 There's less incentive to share negative emotion. 744 00:27:30,990 --> 00:27:32,880 I definitely wouldn't claim that people won't do it, 745 00:27:32,880 --> 00:27:35,703 but it's definitely not being amplified by advertising. 746 00:27:37,410 --> 00:27:39,870 Don't need to say much about stifled innovation. 747 00:27:39,870 --> 00:27:42,270 This will be an open source project soon. 748 00:27:42,270 --> 00:27:45,150 I'm just not quite at the point of releasing everything. 749 00:27:45,150 --> 00:27:46,200 Since it will be open source, 750 00:27:46,200 --> 00:27:48,420 anybody can do whatever they want with it 751 00:27:48,420 --> 00:27:51,693 and that means you can build whatever feature you want. 752 00:27:52,860 --> 00:27:54,840 And then in terms of bots, 753 00:27:54,840 --> 00:27:58,260 bots exist because they're super easy to create and scale. 754 00:27:58,260 --> 00:28:00,120 You can go and create a bunch of Facebook users. 755 00:28:00,120 --> 00:28:02,720 You can create fake links that try and trick Google. 756 00:28:03,960 --> 00:28:05,250 And it's really cheap to do that, 757 00:28:05,250 --> 00:28:08,940 and it's an arms race to try and figure those things out. 758 00:28:08,940 --> 00:28:10,590 There are definitely cases, especially, 759 00:28:10,590 --> 00:28:12,990 we know now with the potential acquisition of Twitter 760 00:28:12,990 --> 00:28:14,160 where it's like there are lots of bots 761 00:28:14,160 --> 00:28:15,810 that are actually affecting the social discourse 762 00:28:15,810 --> 00:28:18,360 and actually distorting conversation. 763 00:28:18,360 --> 00:28:19,920 But in this world to get in the network, 764 00:28:19,920 --> 00:28:21,820 you actually have to exchange a token. 765 00:28:22,800 --> 00:28:25,170 I think it would be practically impossible 766 00:28:25,170 --> 00:28:27,660 for somebody to automatically trick enough people 767 00:28:27,660 --> 00:28:29,670 to actually have large scale effect on the network. 768 00:28:29,670 --> 00:28:32,310 And if it does happen, it really is your fault. 769 00:28:32,310 --> 00:28:33,750 It's not some company's fault 770 00:28:33,750 --> 00:28:35,520 who's not spending enough time on the problem. 771 00:28:35,520 --> 00:28:38,580 It's because you let it happen in your network. 772 00:28:38,580 --> 00:28:40,020 And then there's an easy way to turn it off 773 00:28:40,020 --> 00:28:41,120 once you do find them. 774 00:28:43,421 --> 00:28:45,127 A question I often get about it is, 775 00:28:45,127 --> 00:28:47,127 "Well, what about information bubbles?" 776 00:28:48,330 --> 00:28:50,760 I don't know that I have a really great answer for that. 777 00:28:50,760 --> 00:28:52,980 I don't think we directly solve this. 778 00:28:52,980 --> 00:28:55,170 I think it might be reasonable to say that 779 00:28:55,170 --> 00:28:56,610 in a world that's less polarized 780 00:28:56,610 --> 00:28:57,443 where you have more control, 781 00:28:57,443 --> 00:28:59,040 you might be more accepting of opinions 782 00:28:59,040 --> 00:29:00,603 outside your own perspective. 783 00:29:01,440 --> 00:29:02,340 I think the challenge, though, 784 00:29:02,340 --> 00:29:05,220 with information bubbles is that they're natural. 785 00:29:05,220 --> 00:29:06,240 They've existed forever. 786 00:29:06,240 --> 00:29:07,590 I just don't think we've been 787 00:29:07,590 --> 00:29:09,870 as aware of them as we are right now, 788 00:29:09,870 --> 00:29:11,640 and I think it's really a social problem 789 00:29:11,640 --> 00:29:14,190 of people really desiring to understand. 790 00:29:14,190 --> 00:29:16,560 Build empathy and understand people not like them, 791 00:29:16,560 --> 00:29:18,630 versus a technical problem. 792 00:29:18,630 --> 00:29:20,220 And I don't believe that any algorithm 793 00:29:20,220 --> 00:29:22,770 is ever gonna solve this problem, personally. 794 00:29:22,770 --> 00:29:23,700 So I think that's something 795 00:29:23,700 --> 00:29:25,350 that's a bit out of bounds of what we're doing. 796 00:29:25,350 --> 00:29:27,450 However, when we do get to the point 797 00:29:27,450 --> 00:29:29,010 where we're thinking about algorithms. 798 00:29:29,010 --> 00:29:33,210 You know, if people are willing to share with algorithms. 799 00:29:33,210 --> 00:29:35,730 Like, help them discover new information? 800 00:29:35,730 --> 00:29:39,660 Any algorithm, you can basically tune it in such a way. 801 00:29:39,660 --> 00:29:41,160 Sorry, you can tune it on a spectrum 802 00:29:41,160 --> 00:29:42,750 between exploring and exploiting. 803 00:29:42,750 --> 00:29:44,580 Where exploring is just randomly giving data 804 00:29:44,580 --> 00:29:46,440 to see what people react to 805 00:29:46,440 --> 00:29:48,457 and exploiting is when the algorithm says, 806 00:29:48,457 --> 00:29:51,060 "I'm gonna give you exactly what we think you want 807 00:29:51,060 --> 00:29:52,920 that's gonna actually get an action." 808 00:29:52,920 --> 00:29:55,720 And you can relatively easily tune between these things. 809 00:29:56,970 --> 00:29:58,770 What I would love to see is a case where the user 810 00:29:58,770 --> 00:30:01,170 could decide the level of explore or exploit that they want, 811 00:30:01,170 --> 00:30:02,820 which would allow them to experiment with their bubbles. 812 00:30:02,820 --> 00:30:05,370 And for me, I look at something like YouTube. 813 00:30:05,370 --> 00:30:06,750 I get stuck in bubbles all the time. 814 00:30:06,750 --> 00:30:08,707 I see a friend's YouTube feed and I'm like, 815 00:30:08,707 --> 00:30:11,340 "Why am I not seeing any of this stuff?" 816 00:30:11,340 --> 00:30:13,230 and I'd love to be able to have control over that 817 00:30:13,230 --> 00:30:15,090 in the algorithms that I interact with. 818 00:30:15,090 --> 00:30:17,073 So we do have some thoughts on that. 819 00:30:18,780 --> 00:30:20,550 So what are we thinking about? 820 00:30:20,550 --> 00:30:23,250 Well, we're still pretty early on in what we're doing. 821 00:30:25,050 --> 00:30:27,930 The visibility is, right now, just restricted to your peers, 822 00:30:27,930 --> 00:30:29,430 which actually may be a good thing. 823 00:30:29,430 --> 00:30:30,990 We don't know what it's gonna feel like for people 824 00:30:30,990 --> 00:30:32,970 once they've been using it for a while. 825 00:30:32,970 --> 00:30:34,110 But definitely, at some point, 826 00:30:34,110 --> 00:30:36,630 we wanna think about introducing peers and so on, 827 00:30:36,630 --> 00:30:38,460 and maybe being able to see a bit further out. 828 00:30:38,460 --> 00:30:40,830 As long as people are willing to share their information, 829 00:30:40,830 --> 00:30:42,430 maybe more than one degree away. 830 00:30:44,100 --> 00:30:46,290 One of the big things is how do we help people 831 00:30:46,290 --> 00:30:48,360 get off existing social media. 832 00:30:48,360 --> 00:30:51,870 There are two ideas that we're thinking about. 833 00:30:51,870 --> 00:30:55,000 One is that because we are not actually an application 834 00:30:56,070 --> 00:30:57,360 in the way that say Facebook is, 835 00:30:57,360 --> 00:31:00,270 we're running in the browser an extension. 836 00:31:00,270 --> 00:31:03,090 That extension can know when you're on Facebook 837 00:31:03,090 --> 00:31:05,250 and it can know when you're doing things on Facebook. 838 00:31:05,250 --> 00:31:09,150 So if you decide that you like a post or you save something, 839 00:31:09,150 --> 00:31:11,940 that information can be replicated in your own data store 840 00:31:11,940 --> 00:31:14,730 which means you can sort of like get the value in OpenCola 841 00:31:14,730 --> 00:31:17,493 and still live on regular social media if you want to. 842 00:31:18,450 --> 00:31:21,180 Furthermore with privacy law, you have the right 843 00:31:21,180 --> 00:31:24,000 to request whatever data these sites have on you. 844 00:31:24,000 --> 00:31:26,550 And so we are thinking about writing bulk importers 845 00:31:26,550 --> 00:31:27,877 that allow you to go and say, 846 00:31:27,877 --> 00:31:28,770 "Give me all my data. 847 00:31:28,770 --> 00:31:30,060 I wanna pull this data back in." 848 00:31:30,060 --> 00:31:31,500 So that allows you to move your data over. 849 00:31:31,500 --> 00:31:34,620 And then the real question is how do you get people over, 850 00:31:34,620 --> 00:31:36,990 and I think we can potentially slowly map people 851 00:31:36,990 --> 00:31:39,120 between these worlds as people move over. 852 00:31:39,120 --> 00:31:40,440 But I think we've got a couple of ideas 853 00:31:40,440 --> 00:31:41,970 about how to make it a bit easier 854 00:31:41,970 --> 00:31:43,420 than it has been in the past. 855 00:31:44,880 --> 00:31:47,340 We're also thinking about identity. 856 00:31:47,340 --> 00:31:50,880 I think one of my big criticisms of, say, 857 00:31:50,880 --> 00:31:52,560 something like Facebook is that I post something 858 00:31:52,560 --> 00:31:53,610 that is about my family 859 00:31:53,610 --> 00:31:56,190 and then every random person I know, sort of, sees it, 860 00:31:56,190 --> 00:31:58,050 and I'm kind of like, that's not really what I want. 861 00:31:58,050 --> 00:32:00,180 I want to be able to create my own communities. 862 00:32:00,180 --> 00:32:01,560 I want my family community. 863 00:32:01,560 --> 00:32:02,880 I want my tech community. 864 00:32:02,880 --> 00:32:04,380 I want my music community. 865 00:32:04,380 --> 00:32:06,570 And I wanna be able to control where that information goes, 866 00:32:06,570 --> 00:32:07,800 and so I think that's something 867 00:32:07,800 --> 00:32:09,467 that is definitely not in the best interest 868 00:32:09,467 --> 00:32:11,250 of the existing social media companies. 869 00:32:11,250 --> 00:32:12,870 But I think there's actually a reasonable solution 870 00:32:12,870 --> 00:32:14,730 where you can have an integrated feed 871 00:32:14,730 --> 00:32:15,563 but when you post things, 872 00:32:15,563 --> 00:32:17,340 you choose what identity it goes to. 873 00:32:17,340 --> 00:32:20,070 You can copy things between those identities and so on, 874 00:32:20,070 --> 00:32:22,853 but I think that would be improvement over what we have now. 875 00:32:24,810 --> 00:32:26,280 We're looking at building a better mobile app, 876 00:32:26,280 --> 00:32:27,900 maybe, that allows you to bump with somebody 877 00:32:27,900 --> 00:32:29,730 to be able to exchange your contact details 878 00:32:29,730 --> 00:32:33,633 and allow a bit more rich functionality on a mobile device. 879 00:32:34,770 --> 00:32:35,760 I think one of the things 880 00:32:35,760 --> 00:32:37,680 that I would be super excited about 881 00:32:37,680 --> 00:32:39,660 would be if we do get to a point 882 00:32:39,660 --> 00:32:41,070 where there are lots of people 883 00:32:41,070 --> 00:32:42,960 and they're willing to share their data 884 00:32:42,960 --> 00:32:44,430 with trusted applications. 885 00:32:44,430 --> 00:32:46,470 I imagine maybe an academic institution, 886 00:32:46,470 --> 00:32:48,090 and saying, "Hey, you know what we'll do for you 887 00:32:48,090 --> 00:32:50,100 is if you give us your data, 888 00:32:50,100 --> 00:32:53,910 we can do some research and understand social structure 889 00:32:53,910 --> 00:32:55,080 and opinion and that kind of stuff. 890 00:32:55,080 --> 00:32:58,260 And in return, we'll host algorithms for you. 891 00:32:58,260 --> 00:33:00,600 So that you can get broader algorithmic results 892 00:33:00,600 --> 00:33:02,580 to help you find new information." 893 00:33:02,580 --> 00:33:04,890 And in that world, because your data... 894 00:33:04,890 --> 00:33:06,510 that OpenCola has access to data 895 00:33:06,510 --> 00:33:08,370 across all the systems that you're on. 896 00:33:08,370 --> 00:33:09,690 It's got a much richer set of data 897 00:33:09,690 --> 00:33:11,403 than any one particular site does. 898 00:33:13,470 --> 00:33:15,570 Since all that data is shared with this system 899 00:33:15,570 --> 00:33:17,250 and it even knows things that you've done on YouTube, 900 00:33:17,250 --> 00:33:19,020 you could potentially build a YouTube recommender 901 00:33:19,020 --> 00:33:22,230 that did not even involve YouTube. 902 00:33:22,230 --> 00:33:24,570 And so that algorithm could produce different results 903 00:33:24,570 --> 00:33:26,760 for you that were optimized for your purpose 904 00:33:26,760 --> 00:33:29,610 versus YouTube's purpose. 905 00:33:29,610 --> 00:33:32,490 And I think similarly, you could apply this idea to Amazon. 906 00:33:32,490 --> 00:33:33,590 When I go onto Amazon, 907 00:33:34,470 --> 00:33:35,640 I look at all the star ratings. 908 00:33:35,640 --> 00:33:37,080 I have no idea who those people are. 909 00:33:37,080 --> 00:33:38,760 I don't really know if they're bots. 910 00:33:38,760 --> 00:33:40,440 I don't know if they're like me. 911 00:33:40,440 --> 00:33:41,850 But you could potentially use this data 912 00:33:41,850 --> 00:33:44,850 to help recommend even products for you, 913 00:33:44,850 --> 00:33:46,800 which sometimes is a good thing. 914 00:33:46,800 --> 00:33:49,410 And they could probably do a more authentic job 915 00:33:49,410 --> 00:33:50,580 of doing that than Amazon would, 916 00:33:50,580 --> 00:33:52,863 in terms of trying to maximize their revenue. 917 00:33:54,870 --> 00:33:56,670 We're also thinking in terms of the notion 918 00:33:56,670 --> 00:33:58,500 between publishers and consumers. 919 00:33:58,500 --> 00:34:00,360 So obviously in the social media world today, 920 00:34:00,360 --> 00:34:01,193 there are a lot of people 921 00:34:01,193 --> 00:34:02,760 that just publish out data for people 922 00:34:02,760 --> 00:34:04,650 and so it's relatively straightforward for us 923 00:34:04,650 --> 00:34:07,740 to allow people to create a one way connection. 924 00:34:07,740 --> 00:34:10,020 We just haven't done this yet. 925 00:34:10,020 --> 00:34:11,460 I think it'd be super interesting 926 00:34:11,460 --> 00:34:16,410 if we could even get newspapers to be interested in this, 927 00:34:16,410 --> 00:34:17,820 and if they were signing the information 928 00:34:17,820 --> 00:34:19,950 that they were propagating through the network. 929 00:34:19,950 --> 00:34:21,240 The more people you got doing that, 930 00:34:21,240 --> 00:34:23,400 the harder it would be to inject fake information 931 00:34:23,400 --> 00:34:25,353 from unknown sources into the system. 932 00:34:27,420 --> 00:34:28,920 I'll skip over the leveraging of the network 933 00:34:28,920 --> 00:34:30,030 to enable trust algorithms. 934 00:34:30,030 --> 00:34:31,880 I think I've sort of touched on that. 935 00:34:34,152 --> 00:34:37,350 The other thing is that this is really just a platform 936 00:34:37,350 --> 00:34:38,183 for doing these things. 937 00:34:38,183 --> 00:34:40,140 Everything I've shown you is meant to be pluggable 938 00:34:40,140 --> 00:34:42,480 and everything I've shown you is meant to be extendable. 939 00:34:42,480 --> 00:34:44,790 And I think on top of what's been built, 940 00:34:44,790 --> 00:34:45,870 it would be fairly straightforward 941 00:34:45,870 --> 00:34:49,170 to build an application ecosystem 942 00:34:49,170 --> 00:34:50,820 and even a recommender rig ecosystem. 943 00:34:50,820 --> 00:34:54,630 All the data is standardized and the APIs are standardized. 944 00:34:54,630 --> 00:34:56,370 Anybody could make what they want out of this. 945 00:34:56,370 --> 00:34:57,203 It could be different. 946 00:34:57,203 --> 00:34:58,980 Somebody could make it look exactly like Facebook 947 00:34:58,980 --> 00:35:00,690 if they really wanted to, 948 00:35:00,690 --> 00:35:02,670 but having some basic tooling at the bottom 949 00:35:02,670 --> 00:35:04,950 to enable that would be great. 950 00:35:04,950 --> 00:35:07,263 The last thing is search filters. 951 00:35:08,370 --> 00:35:11,670 So right now there's probably many different ways 952 00:35:11,670 --> 00:35:13,080 you wanna look at your data, 953 00:35:13,080 --> 00:35:15,660 and so enabling rich search filters 954 00:35:15,660 --> 00:35:17,910 where you can actually specify people 955 00:35:17,910 --> 00:35:20,047 and tags and keywords and say, 956 00:35:20,047 --> 00:35:22,080 "This is my name filter that does this," 957 00:35:22,080 --> 00:35:24,330 allows you to build your own feeds basically. 958 00:35:26,110 --> 00:35:27,210 Okay, so now what? 959 00:35:27,210 --> 00:35:30,090 You've seen sort of where we're at right now. 960 00:35:30,090 --> 00:35:31,650 Just to reiterate, 961 00:35:31,650 --> 00:35:33,420 we believe this is problems we're solving 962 00:35:33,420 --> 00:35:35,430 whether or not we make any money. 963 00:35:35,430 --> 00:35:37,050 We're not looking for VC funding. 964 00:35:37,050 --> 00:35:39,630 We are a nonprofit company. 965 00:35:39,630 --> 00:35:42,210 We wanna work with other smart, cool people. 966 00:35:42,210 --> 00:35:46,680 We're looking for debate, collaboration, and other ideas. 967 00:35:46,680 --> 00:35:47,880 We're specifically interested 968 00:35:47,880 --> 00:35:51,030 in alternatives to the network providers. 969 00:35:51,030 --> 00:35:54,090 Tor is probably the next thing I wanna take a look at 970 00:35:54,090 --> 00:35:55,980 but there may be other options, 971 00:35:55,980 --> 00:35:57,420 that just allow two nodes 972 00:35:57,420 --> 00:35:59,250 that are sort of arbitrarily placed on the internet 973 00:35:59,250 --> 00:36:00,840 to be able to talk to each other. 974 00:36:00,840 --> 00:36:04,053 And so, just want to explore and have some options there. 975 00:36:05,220 --> 00:36:07,230 Peer-2-peer systems also have some challenges 976 00:36:07,230 --> 00:36:09,270 with the fact that nodes are, you know, transient. 977 00:36:09,270 --> 00:36:10,140 They're not always online. 978 00:36:10,140 --> 00:36:10,973 And so the question is, 979 00:36:10,973 --> 00:36:13,350 how do you make create a seamless experience 980 00:36:13,350 --> 00:36:16,560 like you get with sort of centralized control right now? 981 00:36:16,560 --> 00:36:18,060 We do have, as I mentioned, 982 00:36:18,060 --> 00:36:19,830 all the data is replicated amongst your peers. 983 00:36:19,830 --> 00:36:22,080 An easy solution is potentially to delegate 984 00:36:22,080 --> 00:36:23,460 to your peers when you're offline, 985 00:36:23,460 --> 00:36:25,260 and that can allow you to get updated 986 00:36:25,260 --> 00:36:26,640 even if you're offline, 987 00:36:26,640 --> 00:36:28,020 but I think there's other cases. 988 00:36:28,020 --> 00:36:29,670 Things that would be interesting too 989 00:36:29,670 --> 00:36:31,920 like creating dead drops to pass information around 990 00:36:31,920 --> 00:36:34,260 or just having some other storage 991 00:36:34,260 --> 00:36:36,390 that allows for information to persist 992 00:36:36,390 --> 00:36:37,890 outside of your actual system. 993 00:36:39,480 --> 00:36:41,130 So that's all I had to talk about today. 994 00:36:41,130 --> 00:36:43,260 Hopefully you enjoyed it. 995 00:36:43,260 --> 00:36:48,260 If you want to ask any questions or if you have any ideas, 996 00:36:48,360 --> 00:36:51,270 I'll be out front or you can reach me 997 00:36:51,270 --> 00:36:54,030 at john.midgley@opencola.io. 998 00:36:54,030 --> 00:36:54,903 Thank you. 999 00:36:54,903 --> 00:36:58,153 (attendees applauding)