 Cool. Hey everybody. It's nice to be in Austin. This is my first time having a great time. So I'm Andrew, Andrew Lewis. Pay attention here. My name is Andrew. If you notice carefully, I'm not wearing a badge. And something happened here. There's an identity thief somewhere in here. I think my name is pretty common and someone was like, oh, Andrew. Nobody will notice that one gone. So look around you. If there's someone wearing an Andrew badge, and they're not an Andrew, let me know. Because I really want one of these badges. So I'm going to be talking about a personal project I've been working on for the last little while. But before I get into it, I'm going to talk about history. So we don't hear too much about history at tech conferences usually. I love history and I find all kinds of excuses to tell to people. So we're going to start in the 1930s. And it's about the person, Vannevar Bush. So he was a cool scientist, engineer. He worked at MIT in the 30s. And he built some of the first analog computers. These were giant mechanical computers that mostly did calculus. This was a hard problem. Took a lot of work and he automated it with mechanical systems. This is an example of one of them. So the operator on the right is actually tracing the curve and then the integrals calculated mechanically. So they're really cool devices. So he got pressed into management as a lot of what happens to engineers. And then in the 1940s, something big happened that reshaped a lot of what science and universities were. And that was World War II. So everybody got mobilized. Everybody had to play a part in the war. And with the war came this explosion of information. So there were these new bureaucracies, new offices, new information was just like flowing out of these new functions. And new paper was coming out, new reports, new science. And these are just some of the pictures that really visualize how much information was being created. And Vannevar Bush's job during the war was to distill this all down, all the research that was being done, and give recommendations to the president and really understand what was happening in research and make recommendations. So he's just flooded with information and new things to digest. And he said, we're being buried under our own product. So science had created all these ways of creating information and outputting it. But we really didn't have tools to make sense of it or to stay on top of information overload. So when the war wrapped up, he put his engineer hat back on and he thought about a way to solve this. And he wrote an essay in 1945 called As We May Think. And he described a dream device that he wanted that would solve all these problems. So he called it a memex, Aaron, a memex. And it was a device that would solve all these problems. And this is what it would look like. It was a desk-sized device. So it would store books, records, communications, photos, and then you could navigate it through with a mechanical way and you find everything you wanted in this device. It had these cool add-on devices like the stylus for taking notes. It had this voice recorder where you could leave voice memos into your memex. It even had this cool clip-on camera for adding photos into your memex. But the coolest thing and the reason we're talking about the memex still is he had this idea that instead of just filing things by categories or alphabetical indexes, it would be really cool if we could navigate our personal information as a graph and really like go by association by what we were doing or where that information came through and kind of in an associative way. So if these are nodes in our memex, we can imagine as the user navigates them, the trails that the user takes through the data gets recorded and then we can use these trails to navigate later on. So it was really forward-looking. The problem with the memex is that it was never built, unfortunately. It was a conceptual device and Vanir Bhush was busy and he never actually got to building it. So this made me really sad. I heard about this idea and it made me really sad. So just a little bit about me, a bit of personal background. I'm an information pack rat. So if there's a piece of information, I try to save it. Like that's just a rule I have in life. So this is my grade five journal where I started like writing what my days were like. These are my report cards from kindergarten which I started saving. I have all my movie stubs over the years that I have like a record of every movie I've been to. Before Google Maps came out, I tried to track my walks through Toronto just to get an idea like where I've been in the city. I even saved all my chat logs from high school horrifically because like these are really not worth saving but I just wanted to obsessively save them. So you can see there's really like high level discourse here. So with all these services that are coming up now, just being inundated with personal information that I want to save and this is a big problem. So I think there's a few solutions. Like the most obvious one perhaps is to talk to a therapist. This is not what I did. What I did is I used Ruby to solve the problem. So I went about building a memex. The biggest problem so far has been gathering the data. So I'm trying to make it all encompassing and capture everything I read or see my browser history. I have all my digital consumptions like the photos I look at or the videos I watch or music and podcasts. All my location history from my phone and my messaging and social interactions from Slack email. And then there's a lot of like soft data like journaling or notes that I take or annotations. And I wrote importers or scrapers for all these services and I put them all into one place. And I'm going to do a little bit of a demo now. This is the part that can go disastrously wrong for me so everybody can just do a little quick prayer and hopefully it won't. Yeah, okay, cool. So what we're looking at is just like the main interface. What we have is a query for everything I've looked at on YouTube. And I can search it by Ruby. So this is now every video on YouTube that I've looked at that is about Ruby. And I can, you know, change the style the way it's displayed. I can also do a different query, something like this provider GitHub verb liked. So this is a narrow query for every repository on GitHub that I've liked. And everything stored as a graph like inspired by the original memex. So I can turn on this graph view and just to show you kind of how everything's organized. So in the middle here is me because it's kind of from my personal perspective. This is a repository and these are the tags and you can get a sense of how I can navigate through this personal history with the graph. So for instance, I could do involve about electrons. So what I'm doing here is doing a query for everything tagged electron that I've liked on on GitHub. And the query gets updated. So it's pretty powerful. I can navigate my personal history this way. Also, as I mentioned, I have my traveling history from my phone. Did anybody fly in last night to Austin? What time? There was a lot of thunder yesterday. And if I turn on my history of traveling, kind of set, see what happened. We flew from Toronto to Houston. And in Houston for a layover, our pilot was going west to Austin. And then he saw the thunderstorms and he was like, nope, not today, Satan. And he turned around and went back to Houston. And that's why I'm really tired today because we had to wait out the thunderstorms. But we got here after all. So it's pretty cool. I have a pretty full record of everywhere I've been over the last half decade. So let's say a couple of years ago, I went to Strange Loop with a friend. Max is up there. And it was a cool, fun road trip along the way. We did a lot of listening to podcasts and music. And let's say I'm trying to remember later on like, what was that cool song that we listened to? So I can do a query occurred with Max. And I'm going to do verb traveled, first of all. So this is all the times I've traveled in a car with my friend Max. So this shows the road trip that we did. And let's say I want to search for something that we did along the way. So I can do verb listened and it occurred during our travel. So this is now a log of all the songs we listened to along the way. And if I want to be more specific, let's say I'm trying to find a podcast that we listened to, I can do something like this. So represents an episode. So this is how I tag a podcast. So these are all the podcasts we listened to. And it's a pretty fun way. Like sometimes I might remember anything about the podcast other than the fact that we were driving through a particular part of the states when it happened. So I just have a lot of options for finding my personal history. When we got to Strange Loop, I'm listening to talks and I'm like taking notes or looking up things. And I can do something like this where I look up on my browser history and it occurred within the Peabody Opera. Peabody. I can't spell on stage opera. So this is all the browser history that took place within the conference center. And again, I can scope it down to, like let's say I'm looking for repositories. So these are all the repositories I looked at during a talk. And this is kind of like a good log of like what people are talking about, what notes I took, or like what I was reading, or listening to. So this is kind of useful. You know, we're at Keep Ruby Weird, so I want to now start going to kind of less useful stuff. So I mean, I'll do one kind of useful one. So this will be a search for everything involving Ruby. So like this is like browser history, it's messaging. I can scope it down to messaging. So this is now a log of everything, every message I've sent that involves Ruby. So I can graph it out. This is a graph of it. But I can also do these kind of cool correlations. So what we have on the screen is, this is a correlation of how many times I've messaged Ruby versus my mood in the day. So you can see, I mean, it's kind of fuzzy, but you can see that as I send more messages about Ruby, my mood kind of goes up. It's a bit big. I can also do it with stress. This is now a query of stress and messages with Ruby. Or maybe productivity if I want to have a look. So as we can see, the more messages I send about Ruby in the day, the more productive I am. And you know, it's kind of useful maybe to learn about myself this way. I can also do something like this. I track my drinking. So I can check my coffee versus my productivity when I drink coffee. It kind of gives a big sense of the more coffee I drink, the more productive I am. I can also graph it in different ways. So let's turn on. This is like every coffee I've had. But I can also graph it by hour of the day with predictable results. So I have, this is 9am. So you can see I have my 9am coffee. I can change it to beer. So you can see my evening beers. And you know, beer before liquor, never been sicker, I think it's how it goes. You can see as the night goes on, sometimes I switch to liquor. I also track my eating. So this is now all the burritos I've had. You can see when I have them. So now let's kind of maybe try to make it a little bit more useful. But let's say I was reading a book and I'm trying to find a quote from that book that I was reading while I was eating a burrito. And I really don't remember any, I don't even remember the book it was. I don't remember what it was about. But I just remember I was eating a burrito while I was doing it. So I can turn on the map view and okay, I remember I might have been in Toronto. So I'm just gonna search for burritos eating near Toronto. So these are all the burritos I've had and I can turn on my burrito heat map here. And as I scroll through my burrito heat map, I'm just trying to get a sense of like where I eat these burritos and maybe one of them will come and pop into my head about like that time I was eating and reading. So one pops up over here. Let's have a look. So I can zoom in, have a look at it and see what else I was doing at the time. So here I was, it was a 20 degree Celsius day. I was in the park and I was reading a book. So that's great. That's what I was looking for. And then I can go in and see like what else I was doing. I had the photos here. I have the quotes that I saved from the book which is what I was looking for, my burrito, you know, other things I did. So it's a bit contrived. This doesn't happen, you know, it doesn't happen too often. But when it does, when I do have something I'm trying to find that's a bit esoteric. I have a lot of different ways of finding it. So yeah, that's the personal project. A quick demo of it. And it worked. So I'm happy about that. So now I'm going to go over some of the technical specs. It's a bit heavy now. Just kidding. I'm not going to do that. If you want to hear about the technical details you can go to RubyConf next week where I'll be doing maybe a slightly less weird version of this talk. Or you can talk to me after I love talking about this stuff. But right now I want to talk about something else. Does anybody recognize this? What kind of proof is this? Just someone yell it out. It's a Delta Epsilon proof. So I was a new computer science student many years ago and I was doing these math classes and these Delta Epsilon proofs were just kicking my ass. Like I was really depressed about it. I thought I shouldn't be in computer science. I was pretty close to dropping out. I really wanted to switch to history and just like never touch computers again. So these are just some records I dug up from the past that kind of like captures my feelings around the same time. This is like me just asking a friend can I double major in history and philosophy of science. Like this is where my brain was at. But around this time I started hearing about Ruby on Rails. So this is a chat log from 2005 where I'm talking to my friend Andre about it. And like yeah I got to check out this cool Ruby on Rails. And this was like this was a big deal for me. Like I discovered Ruby on Rails and like programming became fun again and it had a big impact on me. You know it's so cool. There's like so many things that were happening around this time. You know really cool ideas. Really like really good community. And I think Ruby on really kind of like brought me back into tech and really gave me the joy and part of it was just the weird projects that were in the Ruby community and like the culture and like the people who were not in it just for the technical aspects. So I just want to share that about my personal history. So you know keep Ruby weird to me as very personal and it like kind of kept me in this industry and I've had a good time. So I think to bring it back to the original Memex history. The Memex was weird too. Like there was a lot that was weird about it. You might have guessed this when you saw the Cyclops camera. This is like a weird project. But there was a lot of other reasons it was weird. First of all it's form factor was strange. So computers in the 1930s look like this. This was a computer and if you're squinting trying to look at the little desk size device that's not the computer. The computer is the room of people collectively. It's called a computer. If you don't believe me here's a label. So it's the computing section. So computers were big. They were either people or they were room size devices. This is a hard drive from the 1950s. Computers are really big. Even you know later on we have mainframes that were for room size. The Memex on the other hand was this desk size like one user personal device. Like it was small. It would fit at your desk and it was really for one person and this was strange. This is like someone made a mock-up or a real cabinet. You know roughly giving the shape and size of what a real Memex would look like. It was weird for other reasons too. It was weird for the problem it solved. This was Bletchley Park and it was solving Nazi codes like computers were you know for really hard important problems. This was being used to make ballistic calculations for the war. This is the census, the UNIVAC being used for the census. So computers were used for these really hard important problems. The Memex on the other hand was just for you know helping people understand their history and their personal knowledge. The Memex was weird for other reasons. For the technologies it used or didn't. So if you think the Memex was you know kind of a forward-looking device from the 40s it actually wasn't. It was actually quite backwards looking. It was all based on microfilm which is already a technology that was on the way out. It wasn't really the cool thing anymore. The cool thing were these things, the vacuum tubes. But for Vannevar Bush he really wanted to just work with what he knew, which was old technologies from the 30s. But really he just wanted, he was more interested in the concept than the idea rather than specific technologies. And this was vacuum tubes being used. Like this was already kind of like how computers were moving and he you know he just wanted to solve his particular problem without worrying about the latest and greatest. And then even later on he kind of went into weird territory, thought about like using crystals for persistence layers and using mind control. And again it was less about the specific technologies. It was more about like the idea of like what a Memex should be able to do for individual users. It was weird for how it was published as well. So this cool amazing piece of computer science history, you'd think it was published in a big journal that was read in the community. It was actually published in the Atlantic Monthly which is a general audience magazine. It was published, this is in the table of contents, and you can see it was published next to the poetry, a report on chips, and you know a novel called The Egg and I. I don't know what it's about but it looks pretty good. But one of the most important essays in computer science history was published alongside these you know other things. And then later on the next version actually came out in the Life magazine and here it is in the table of contents. And the essay again, this is where all the illustrations came from. But if you look at like what surrounded the essay, you know we have a laxative ad here. So you know one of the biggest ideas was like just you wouldn't have noticed it if you weren't paying attention. And I think like that's an interesting thing about it. But I think like for you know there's these four reasons I mentioned but there's another big reason that I think it was weird. It was just one of many like weird side projects for Vannevar Bush like he was a busy person and he had a lot of responsibilities. He was in charge of what became later the NSL, the National Science Foundation. He was actually one of the civilian oversights for the Manhattan Project. You know he was a co-founder of Raytheon and like I don't want to talk about warmongering or whether that's good or not but he was a busy person. And even later in life he had a lot of things that he tinkered on and the memex was just this idea he kept on coming back to. He worked on it a little bit, published a little bit more about it. And he never you know he never completed it or really like put it out into the world but it still had an amazing impact on history. So I think side projects are important. They're big privilege like not all of us have you know the time or the freedom to work on them. But I think if you do make them weird, make them experimental. That's my takeaway. So I just want to show one more thing I've been working on. It's a little it's a little next version of it. So what if we combine the memex with Alexa? So I'm going to do a little demo of that. I call it the memexa. So let's go back to this turn off the map. So let's do a query. So memexa when was the last time I was in Texas? Cool. That works. So you know I can ask these kind of useful questions. I can also ask like less useful questions. When did I last see tender love? Seven months ago. Cool. Where did I last see tender love? Okay. Let's have a look. Yeah. That was that was at RailsConf. This was pretty good. Find photos of tender love and business. Okay. Find photos of tender love and poutine. Yeah. I got that. You know and for each one of these we can kind of go in and look at the context like this. In this case this was the conference in Montreal because he said and he gets, you know, I can use this voice interface to get back to it. It was actually a very cool day if you remember. So let's go back. Find photos of tender love and I. Cool. Yeah. This was at RubyConf a couple years ago. How far away from tender love am I right now? You know obviously that last one was fake. But I mean the rest were real and they were coming from real data that was in here. So just to close off I'm going to do, you know, concluding ritual that, you know, I'm Canadian. This is kind of like what we have to do. So apology number one. Sorry tender love for being so creepy. I talked to him earlier and I warned him this was coming and he was okay with it as long as he had a right to delete the data that was in the memex. So that's cool. Apology number two. So I was working on this on the plane yesterday. This is me working on the plane. So I just want to apologize to the person next to me who had to listen to me talking about tender love for my laptop. The whole play. And I wish you would understand that it was for, you know, for a good pause. But seriously, where's this all going? So this has been kind of like a long running personal project. I've been working on it for a long time. I think there's a lot of like potential business cases in it. I'm not really worried about this. I'm really, I'm really interested in the experiment of it. Like how far can I get with putting my life in a database? What habits changed? What, what about my life is different? Like how do I understand myself differently? There's a phrase that was kind of rolling around with Vannevar Bush said he talked as people would work on, as they would use the memex, the memex would actually mold them and vice versa. So there's almost like this symbiotic relationship. And I think my project is like an experiment and just seeing how far I can get. Or to put it another way, playful mind is the core of Ruby. And I like this just, you know, just to be playful and to experiment. And this is kind of like why I'm doing it. So thanks a lot for listening. If you want more information, send me a message or sign up for my newsletter. I do hope to open source most of this sometime next year. So shoot me a message and I'd love to talk about this. Thanks. Wow. Wow. I guess I'm, I'm an American so I don't get GDPR. But unfortunately, do you, do you want to do questions? Yeah, sure. Yeah. I think we have, we have about five minutes for questions. Anyone, anyone? Okay. I will, I will start here because you're closer. So I guess my questions are pretty obvious one. How do you enter all of this data? Like, do you type it into your phone as you're going places or do you have some kind of automatic tracking? Right. Yeah. So the majority of stuff on the screen was actually automated. Like the stuff that wasn't automated was like the beer and like the food. Like that wasn't. And like also sometimes I tag people manually. So like I have a little app on my phone that I, you know, it's like a really simple command line kind of app. And I enter data that way. But the majority of the rest of the stuff was like coming from like Twitter likes or browser history or like I've automated almost all of it. Like the travel logs are all from my phone. So yeah, like the majority of stuff, like I could, I could have a pretty useful version of this that wasn't, wasn't using any of the manually entered stuff at all. So yeah, like the burritos are fun for demos, but like, you know, that's not the most important part of this project. So yeah. That's that's it. I'm not actually going to be at RubyConf. So that's I'm asking this now. But what's, what do you use for speech recognition? Speech recognition. It's the web, it's the web speech API. It's available in Firefox and Chrome. It does a pretty good job. Like, yeah, I, you know, this actually took maybe like, I don't know, two hours of work. Like it wasn't, that wasn't a hard at all. Yeah. You're closer. So you win. Yeah. How important is the, the graph for modeling those relationships? And, and are you using a graph database? Yeah. Yeah. So yeah. I mean the graph is central. Like that's like the most important part of this, like the idea that, you know, I'm trying to model things that I've experienced. So like, it's like, there's no schema for that. Like it is a graph of like, associations in my head. So I'm using this really fancy on you, graph database called Postgres. And it works really well. Like I was actually using fancier stuff before. And, you know, it's just like too weird, too weird. And like Postgres is like, rock solid. And basically, everything's running off a node, node and relationship table. And the query planner is really good at like, figuring out like, which order to run things in, like, actually like, Postgres has been amazing for this. It does full text search, which has been really useful. So, yeah. Nothing too fancy. And it works. Can I give you money to use this right now? I mean, I mean, the biggest problem is I don't want to host people's data. So I think I needed to design a system that I can deploy updates and roll out stuff and like, control it, but not host your data. So when I figure that stuff out, let's talk. I'm thinking of doing Kickstarter next year. So if you're interested, yeah, get my mailing list. It's fine. It's not cracked. It's not cracked. Questions? I think, I think I have, I have a question. How did you get all my data? Are you my MMX? I mean, it could be, it could be like a service that I offer you your data. Oh, thank you. All right. Any, any other questions? Okay. So what sort of insights have you gotten from the data? Yeah, I don't think there's been any, you know, kind of like particular, like, you know, like lightning bolt moment of like clarity around my life. You know, a lot of the correlations that I showed, like, they're kind of stupid and like I thought I would find more insight that way. And I'm, I think like as I work on this project, I'm not looking for that kind of stuff. I'm, I think the thing that has been really useful for me is just like the ability to just search a term and see like all my history with it. Like, if I see someone's name, I can just put it in here and see like that time they were mentioned in a newsletter 10 years ago or something like that. And like, this amazing context is like just available like within like, you know, one second or two seconds of time. And I think that habit has really like changed the way I live. Like, I know that I can always find stuff and that's like a really powerful kind of way to live. So, yeah. I think that's enough. Thank you, Andrew. Everyone give him a round of applause please.