You're watching The Daily Decrypt, where we are all currency competition all of the time. I am your host, Amanda B. Johnson, and today's episode is brought to you by Bank to the Future. Most of us spend some or a lot of time online, whether it's for shopping, researching, entertainment, you name it, watching The Daily Decrypt naturally. And so the question then becomes, what happens to the economics between us, if and when our online experiences become so immersive that we begin to sense them as an entirely different reality? Machik Olpinski is a technology blogger who got his start at Google and who has recently begun exploring the potential relationship between cryptocurrency and virtual reality. Tell us, how did you become interested in cryptocurrency in the first place? Then we'll move on to these other things. Yeah, so it all started with, basically my background is in media platforms. I worked for Google for many years, working with Google's display network, the banner ads we're seeing everywhere on the web, and then YouTube. And I was always interested in these emerging technologies. And that was back in 2012. I've learned about Bitcoin. And as many of us, I kind of thought about it initially as a cryptocurrency and then discovered the entire protocol aspect that this thing could be much bigger. And then really I got into it way more. And most of the topics on my blog, the topics I cover are at the intersection of media and cryptocurrencies because online media, economics of online platforms, this is something I've been working with for many years. So naturally, these intersections are really interesting to me. And virtual reality is, of course, it's an emerging technology. Super interesting and more of an enthusiast than somebody who's actively pursuing projects in that space as of now. But the implications of virtual reality in the blockchain are like hardcore sci-fi stuff. That's actually coming. So that I think hardcore is the perfect word to use in that sense. Because so before cryptocurrency created actual scarcity that could be translated into money, multiplayer games they had in game tokens. Like people were buying and selling things with each other in games before cryptocurrency was even invented. Now those tokens within those games perhaps didn't have real world monetary value because they weren't, I guess, especially scarce or just weren't easy to use. But as you pointed out in your piece, okay, so cryptocurrency is like digital currency that could not only be used in games as payments from player to player, but oh, once you take the headset off, this money can actually buy me things in the real world, too. Yeah, like the future that we're heading towards is the future where the digital and non-digital and the analog are converging. So there's really like with Bitcoin already there's no difference between, you know, you can buy stuff in the real world for Bitcoin. I would even say that the implications of the blockchain for VR go one step further because with a blockchain essentially we can come to a consensus as to what happened, what transactions took place and in what order. Basically the way that the time stamping and the blocks allows us to come to a consensus in terms of this particular version of truth and reality. So the blockchain is the history of what happened and we all agree to that. If you take this, if you forget that a payment is like, you know, using in-game payments in VR, that's just one thing. It's very interesting and, you know, it's going to happen for sure. But essentially, if we assume that the VR is going to take off and I'm assuming it will, the question is, you know, how this virtual world, there's this concept of the Metaverse. Metaverse is basically like the 3D VR web. We have a 2D web, we have websites and it's all connected via the HTTP protocol. So the question is like, how the VR worlds will be connected? So the blockchain can be the foundation and basically provide a foundation for the history of the particular VR world. Like what happened? Who bought a particular piece of land? Who owns what? Because right now, if you have a virtual reality experience, we're basically downloading an application from the server. And it's controlled by Oculus or by Google or by Steam and they basically serve you. The particular version of the world, but once you turn it off, it disappears. There's no continuity in that world. Or if there is, it's controlled by the third party, like World of Warcraft, for instance. With a blockchain, you can imagine that we can come to, instead of coming to a consensus in terms of the transactions like we do with Bitcoin. So we have a consensus of what happened with transactions to place and what's the balance of each particular user. We can have a consensus as to the state of the virtual reality world. So you can have parallel versions of like virtual history. And you can join the reality that you prefer, for instance. And you can create these virtual worlds and agree in a decentralized manner as to the rules in the particular virtual world, as to the economy and so on and so forth. I told you, it's very sci-fi. Yeah, this statement you made of being able to, I think the way you phrased it, was join any reality that you like. Like, I mean, that is what it caused me to want to talk to you about this. Because that is like, wow, that is a huge implication. And let's just talk for a moment for anyone who has not experienced virtual reality. Do you have your goggles there? Yeah, I have the Gear VR goggles here. This is the mobile VR headset. That's manufactured by Samsung. Would you mind, I know they look silly. Would you mind just putting them on for a moment, just for perhaps? Without it, because you know, you slid the phone here, without the phone. It'll make you look googly-eyed maybe. Like this? Yeah. Okay, yes. It looks really goofy, but it's the internal experience.  I've done it myself, and yes, I want to describe for our viewers, anyone who has never used virtual reality. So with the headset that Machik just put on, he would slip his phone into the end, if his phone were running a virtual reality app. And I don't know how it's able to do this, but basically with the combination of the headset and the phone, like all other visuals are cut out.  And as you look left, the phone's program shows you what is left in that software picture. You could look up, down, right. You can look all around. You can turn around, and like I said, I've only tried virtual reality once, but in the program that I tried, I think someone made it like a little horror show or like a haunted house that I was walking through. Anyway, so I don't know. I think the default was that if I stood still and just looked straight forward, I would slowly move forward in like a hallway. And I was looking around in the hallway and there were blood spatters on the floor. And I was probably like, I was looking at these papers, and I was probably only in there for like a minute.  I was like, oh, there's a couch here. Oh, like I'm in a living room. Oh, there's Pete. Like it was so immersive that just when I took them off, I felt like I had been transported through like the pipeline of time travel into another place. Yeah. That's pretty much an experience and this is how you feel. If you're watching this and if you feel like you don't know what we're talking about, you need to find someone who has the Oculus Rift or HTC Vive or any of these headsets. There's many of them coming up. Even Google Cardboard. Isn't Google Cardboard like $15 or something like this stuff cheap? I have Google Cardboard here. It's an old one, but you basically put your phone in there and it works. It shows you the idea. The actual experience is like it's actually amazing what you can get from the piece of cardboard, but in terms of the actual experience, there are with Oculus or with HTC Vive or even with Gear VR, the quality is way better. So I advise you to try the best headset possible and then you will understand. Like if you're watching this, just try it and then you will understand. Otherwise, it's just really impossible. It's like describing someone at the taste of food and trying to use all these objectives and yeah, it sounds cool, but once you try it, then you know it. So this is this type of technology you have to try yourself. Now, okay, so that company Voxelus, I thought I remember hearing that they were starting a cryptocurrency called Voxels and now in terms of how virtual reality games could be hosted, you were saying before that right now virtual reality is hosted on like Google's server or Oculus's server or whatever. So are you suggesting that you think that the games themselves could be hosted in a blockchain like manner, like is that what Voxelus wants to do? I'm not sure what exactly is the Voxels model I heard about them, but basically, because VR it's not only about games. There are projects and there's a project run by Mozilla to create a Firefox browser. So they're focusing on what's called WebVR. So it's basically the 3D web and the way of describing 3D worlds using HTML. So you can go to a website in VR and you can have the 3D experience of the website. So yeah, so that's, it's still very niche. It's the prototype stage, I would say, but it's going to take off. So it's open, it's open like the web, it's not closed. It's not the closed ecosystem like the Oculus ecosystem or the Unity and Unreal, all these 3D engines that were used primarily for games. So we are at the stage right now where everything is closed because all these companies have to get the return on their investments into the technology, but it's going to open up. And in one way or another, we'll be able to create these virtual worlds, which are basically maybe not hosted on the blockchain, but where the consensus as to what happened in the virtual world, or who owns what, or who owns a particular piece of virtual real estate, it will be hosted on the blockchain. There's one of the projects called, I don't know if I remember it right, but built on Ethereum, it's called Ethereum. So that's a proof of concept of a virtual world hosted on an Ethereum blockchain. So we are at the very early stage, but theoretically and conceptually, these problems are really interesting, like sci-fi stuff coming materializing itself. So do you think, okay, so if one can choose their own reality, at least for a time, at least for the period of the day that you don't need to be like actually eating or actually producing something in the meat space world, do you, so do you think that people will choose to spend perhaps more time in virtual reality than reality reality? And if so, it seems like you're predicting that people will start to provide it, not goods perhaps, but I mean, so let's say you and I were interacting in virtual reality and you know how to tap dance and I'm like, hey Machik, I will send you $2 worth of cryptocurrency if you do a tap dance for me like right here and right now, like wearing a pink bunny costume, maybe I'm into that. And you do that and I send you the $2 worth of cryptocurrency. So it's like, we've just had like a real economic transaction of value in virtual reality. Is that kind of what you see happening? Yeah, I'd say it's already happening, like people are spending hours and hours in games like World of Warcraft and you know, they're getting paid for that. So these online economies are already there. And the only reason that the currencies they use are not like directly exchangeable on on like, you know, global currency markets is because of the legal obstacles.  So now we have platforms like Ethereum, for instance, where you can everybody can create their own currency with a few lines of code. And you know, what virtual reality is doing is just adding this extra third dimension to the entire game.  No, I'm just like, you know, I'm a more often enthusiast than I'm seeing in this as a next step in the evolution of media. So the internet, like the way it was evolving has been evolving was like, you know, we evolved from text and then we had images. And now is the time where video online video went mainstream, like we're having this conversation on video using Google Hangout five years ago, it would be impossible. Like this wasn't something people were recording on a daily basis. And now like video podcasts are something very common.  So, yeah, and the social VR applications are already there. You can get your Samsung phone, download a social VR app, and you can watch movies with people from all over the world.  So, you know, it's happening, but it's very niche. But it's going to evolve. It's going to evolve fast. And yeah, people will be working and maybe partially living in these worlds, whether that's good or bad. I'm not the one to judge, but you know, it's it's inevitable is going to happen. You know, I've already begun to feel a little bit behind the YouTube curve in that there are already virtual reality videos like on YouTube. And so if you even if you don't have a headset, these YouTube videos have a little clicker up in the corner of the video screen. And you can click where you want to look. And as long as they were using like a 360 degree camera to make their video, even without goggles, I can look all 360 degrees all the way around where that YouTuber was filming.  Yeah, 360 is like the first step towards virtual reality for a lot of people. Because you can watch these 360 videos on your phone and you can tilt your phone. And you know, you can you can have a full 360 view. It's not the full it's not the full DR. Yeah, it's not but you know, it's a glimpse. It's the first step for many people. Yeah, so so it's going to happen. It's going to happen. But the question is like to me because you know, I'm interested in how media works in terms of you know, economics, how these platforms make money. I worked for a platform who makes a lot of money by facilitating these exchanges. I mean Google like they're the backbone of the internet in many ways. So the question is like, you know, how we are going to like if you're going to have a popular virtual world, like you have a popular website, you can make money off this website because you can display ads or you can sell products. In virtual world, like you know, maybe that's too you know, maybe for sure we will have ads. The advertising will be there. But the question is like, you know, how it's going to be monetized. Like you don't have like the 2d web, 2d interfaces, the screens and your touch screens and desktop screens are all based on the concept of clicks and everything runs on clicks. So people are clicking and click is the is the primary currency of the attention on the web. Like how many clicks you got and everything revolves around clicks. In VR, you don't have clicks. You have an experience. Of course, you can imagine you have in VR and you can have page views and clicks in there. But in general, you are in a space. So what's going to be the the currency? Like how are we going to what's going to be the attention currency of VR? This is something that I'm really interested in. And then I'm thinking about a lot because that's going to come sooner or later. But I have some ideas, but no definite answers yet. Care to share the ideas? That could be a good closer question. Yeah, it's generally, if we think about the blockchain, like you know, VR is just one aspect of it. But generally, the concept of click has evolved from the client server model of the web. Like we have servers and we have our clients and if you want to see a website, to go to the website, what's happening behind the scenes is that your computer sends a request to the server and it loads, you know, requests to the website. And the server is basically counting these requests, same quest you have. We're assuming that more people have seen the website. So because of the, because of the client server model, we got the concept of impressions and the clicks and click through rates because, you know, the number of times the number of times the page was displayed and the number of times somebody clicked. So here we have a click through rates and everything, the whole like online economy is built on top of that. But with the blockchains, you cannot come to a, there are no clicks in the blockchain world. Like, because there are no clients and servers, everything is based on blocks, on state changes from one block to another. We had one state and then the next block comes and we, the state of the blockchain has changed. Certain transactions were included into the block. So in the blockchain world, we operate on the concept of time. So my insight, my observation, maybe I'm wrong. So I'm just basically thinking out loud right now is that the future economy, like the future media, if we have like decentralized Facebooks on the blockchain or YouTube or Reddit, like the equivalents, of course, because they will look totally different or have like some kind of a decentralized virtual world on the blockchains. So the economy, we will come back to the concept of time. Like in the age of TV, you had airtime. You were selling airtime. You were selling specific, your content was occupying time. So you could buy as an advertiser, you could buy 30 seconds or one minute of airtime.  So there was the scarcity of time, not scarcity of clicks. And I think that with the blockchains, if we will build the next Facebook or Google or Reddit or the virtual world on the blockchain, because we have the concept like the time is represented by blocks, everyone will be able to sell basically time in their feed. Like, you know, if I own my feed into decentralized Facebook, I will accept money for selling time in this feed, because I cannot sell clicks, like, you know, Facebook is selling clicks, but the Facebook is the middleman who's counting the clicks on the blockchain. We cannot count them. I don't know if it makes sense, but because it's like, you know, I'm very deep into that. So some things are obvious and you have to understand like how the, like if you're not in online advertising, so some people don't recognize that clicks are actually valuable and, you know, everybody wants to get clicks and people make money on these clicks. And if you record this on YouTube, you make money on impressions like that. Not in versus views, like, you know, if somebody wants to watch a podcast, they generate a view on the YouTube side and YouTube can serve an advertising before you show. So it's all about, but it's again, it's the ad request that's happening. So it's all based on the client server model. So in the blockchain, I think we'll come back to the concept. The time will be again, the currency of attention. Does it make any sense? Like, you know, is it, does it click? Does it click? Well, I mean, that's already how the daily decrypt is monetized. We sell sponsorship slots on our show because that those 15 seconds on every show are scarce. But yes, I mean, we don't have, we don't have the confidence of our content living in a peer to peer network. Our content currently only exists by the good graces of Google, and they are definitely a single point of failure for us. So yeah, I can definitely see the transition from what it is that I already do to me being incentivized to having to paying to have my content hosted in a peer to peer way. Yeah, so that's exactly it. You're selling, you're selling 50 second slots on your show, but this 50 second slots are not objective in a way that, you know, there's no consensus as to these 15 seconds, like when did it really happen? With a, with a blockchain, we have the, we have the objective time. We come to a consensus when something happened. And this consensus is based on the block numbers. So we all see that this block happens now and the entire world can agree to that. So imagine that you have a feed that's timestamped on the blockchain and it's tied to your decentralized identity. And the daily decrypt could then occupy a certain moment in time, which is objective, which is on the blockchain. And you could see that, you know, you have this, you can use the metaphor of a TV channel that only goes forward. And, and you can sell it and you could buy advertising for daily decrypt on somebody else's channel, because if there are a lot of people watching a particular channel, you will get discovered because they will discover it. Just exactly like the TV, TV worked in the past. However, with TV, there was huge barriers to entry, like only, you know, you had to have the broadcasting equipment, licensing, millions of dollars. Right now, I think with the block just everybody will have to, you know, we'll be able to own their channel. And it will be to be based on the objective time based on the blockchain style. But, you know, it's very early. But this, these issues are super interesting to me. How this future economy is going to work. And clicks will be gone because clicks are, clicks belong to the client and server model. The internet doesn't know it now. Well, I hope you keep blocking about it at machikopinski.com. If anybody wants to know what that looks like, that'll definitely be in the show notes as it always is. The show links are always in the description section. And yeah, other than that, thank you for your time. Thank you. Thank you so much. Today's episode is brought to you by bank to the future.com, the online investment platform that invests in the future of finance. One of their investments was in payments company Uphold. And below you can find the video link that explains the impact they've had by taking the volatility out of Bitcoin. More information is available at bank to the future.com. Thanks for watching the Daily Decrypt today. I hope you come back tomorrow. See you then. What market share is there to be had by catering a crypto network to a specific demographic of people like gamers? Jeremiah Nickel is the marketing manager for a cryptocurrency called Hyper. The other thing that's kind of neat is not just tied to the hyper crypto servers, but there's actually a hyper tip bot that's available for Twitch streamers. You would invite the hyper bot to be in your chat so then people can donate hyper to your Twitch stream or they can they can bet like micro betting, which I think is going to be a really neat thing for us.


Anyway, for question, if you've ever used Nocogiri or any other XML parser, or at least know what it is, can you raise your hand? More importantly, keep it up if you actually enjoy using it. Exactly, I thought so. So for the past about eight months, 199 days to be exact, hoping to do this tomorrow, so it could have been 200, but alas, I've been working on a alternative to Nocogiri as an XML and HTML parser in Ruby. And, okay, nice, as some quick examples, it's about 91% Ruby according to GitHub. It uses small native extension to be a little bit faster. It's not exactly at web scale. Then again, it's not Node.js, so sorry. It runs on MRI, Rubin is in J Ruby. It's for that safe, unlike Nocogiri, which is not. As a quick example, basically, on Rebedius, on our production systems, Nocogiri crashes about 30 seconds in consistently, meaning I cannot use it at all. If it will crash occasionally, that's fine, but every 30 seconds is kind of a pain. It supports XML and HTML.  It has support for XML namespaces, Xpath, CSS electors will be coming up, and it doesn't use system libraries, such as libxml. Probably pretty sure that most people that have used Nocogiri are familiar with how long it takes to install it. It's because they vend their libxml, which takes quite some time. For example, on my own laptop, Nocogiri takes about a little under two minutes to install. This is from a local file, so there's no, like, RubyGems network involved. On the other hand, the library I've been working on called Ogre, it installs in about 1.2 seconds, and that is including compiling a native extension. And the last bit, so you can install it from RubyGems called gem install Ogre. And so that's it. Well, thank you guys. Yeah, I hear you see me today in the morning. I'm a bit confused because I woke up really, really sick, but, well, when I was back home in Berlin, there was Florian Griecher, and he told me, yeah, you should actually always have lightning talks and conferences. Yeah, so I do a lightning talk here. And my lightning, yeah, my name is Malvina, you can find me there on Twitter. My lightning talk will be about sketch noting, so let's sketch note because I know that you want it. So now you probably think, oh, that girl might be an illustrator and it's totally easy for her to do a sketch note, but actually no, I'm working with Avanda, so I'm a Ruby developer, like you guys, and girls. So let's see what we need for sketch noting. We need material. Actually, we just need some paper or a little book like this. Here you see I made this whole thing today in the morning, and you need a pen, and it doesn't matter which pen, just take a pen that you have. And yeah, maybe then comes to you the fear of the empty page. But always remember, done is better than perfect. That's what I heard in Wroclaw earlier this year. So you might wonder how to start, and yeah, I can tell you just play with faces, fonts, and well, if I say forms now to have three Fs, then you might think, hey, what's forms? So I mean shapes. So how to play around with faces. Yeah, you actually, no, that's something missing.  So probably you can draw it behind or before things that you just heard in the talk, like what we've heard before, write down something, and then you can put like these kinds of smileys if you liked it or disliked it, or maybe you're a bit skeptical. And yeah, if you want to, for example, you want to include the people who are talking, and then you're not sure if you will recognize them later on just like put their names and then everything's fine. So fonts, it's very nice if you have like different styles of fonts in there, you can just play around, maybe you're able to speak Japanese and you can do some nice signs, but if not, no problem. And then yeah, we have shapes, and there's basically just one rule for shapes. It's first you write the things and then you draw the shape around it, like first you write Barcelona or Popono, and then you put the shape around it. So what we can do then here, I met in the last day, this girl called Nadine from Catalonia, and I asked her about special things about Catalonia, and she told me like two words, like Rauta and Sen, which is very popular here, and she told me about this Lagimaste San Lorenz and the Botifara and the Pig Slaughter Party, and actually I let her write down the Catalonian things, so I also have her handwriting in there. Yeah, and so you can get started with sketch notes. Thank you. Hi everyone. My name is Tobi, I'm from Berlin. You can find my Twitter at Pregtop, and today I want to tell you a little bit about Shoes 4, which is using Ruby for GUI applications, so graphical user interfaces. So first, what is Shoes? So Shoes is a GUI toolkit for or a DSL to build GUI applications. It's cross-platform, that means Linux, Windows, Mac, you have it all. You can package your applications so that they can run on any platform, which is awesome. You write all Ruby all the time, you don't have to write Java or C or anything else, you just have Ruby, which is awesome, and most of all, Shoes is simple. Shoes, I often think of Shoes kind of like, what Ruby is to Java is Shoes to SWT or other graphics libraries, because it's simple and it's fun. Because of that, I love Shoes. Because, quite frankly, ever since I started programming, which was many years ago, I always wanted to have two big graphical user interfaces. I wanted to do that. I just wanted to write a little nice application for myself that I can use and I can have fun with. But everything that I used kind of sucked, at least from my perspective. Your opinions may vary, but then I saw Shoes and I fell in love with Shoes. One of the common questions at this point is, isn't Shoes that? Like, isn't that the thing that Y built some time ago and now it perished? No, it's not. There are people around, like me and other folks, like Jason, somewhere here, who's going to give a talk tomorrow, who are maintaining or writing a new version of Shoes, which is called Shoes4. What's Shoes4? Basically, we all got together and said, okay, we've write one new implementation from scratch. We aim for almost 100% compatibility with Shoes3, dropping some features like video that were rather not used either way. It's a complete Ruby rewrite, so it's all Ruby all the time. We have a pluggable backend. I'll come to that in a second. And the default backend right now is JRuby and SWT, but we got proof of concept implementations of CRuby and QT and even Opel and the atom shell from GitHub. So yeah. Pluggable backend works. How does it work? We have one DSL layer where the domain specific language is defined and then we have a backend that actually does all the drawings. So right now JRuby and SWT does the drawing, but also we can generate HTML or JavaScript, whatever. Enough talking, some samples. This is just a simple, whoops, you don't see much, simple animation, but let's get to the next one. You can have a little clock, nice, right? You can play Snake and then Crash or something. And also, which we've been working for some while, this is Tanks Bank, but there aren't actually any enemies here. So a friend of mine named it Friedenspanzer, which is German for peace tank. So a couple of more examples. This is my first shoes application that I built. It's a Twitter client. You can build music players. This is my favorite shoes application myself. I use it to track Pomodoras. I just had no Pomodora tracker that I liked. So I wrote one myself that works on my platform because with shoes it's nice and easy. You can control drones, save the hack, teach children. I'm running slow on time. Simple app. This produces that. It's still downloading the image, pending the Wi-Fi. Nope. Good. Why should you care? So you're a web developer, right? Probably. Or you write command line applications. So why do you care? Well, it's about fun. And I like that I've been backed up by the last couple of talks. It's fun to write something like that. It's another tool in your toolbox to do something awesome. And of course it's there to teach children. And for the exact same reason that you put goggles on a dog. It's just fun, you know? So the reason is I love shoes. And I love shoes so much that this presentation software is written in shoes itself. So this is a shoes application and you can drag it around and you see the code of the slide there. Yeah, thank you. Hi there. Awesome conference. I'm coming up on this stage with the assumption that there is a fair amount of people in this room who like coding, right? And who believe that to be able to code is a very powerful and valuable skill. In addition to that, I'm sure that many of us are very passionate about sharing what we know with others. And I particularly like programming communities, especially the Ruby one, because of our friendliness and openness to newcomers and because we are very keen on sharing what we know, our knowledge and our passion with them. I personally have learned a lot, a great deal this way. And I think that the constant income inflow of new people and new ideas is what moves the community forward. So if you agree with me, I think that you might be interested to learn about and probably get involved with the upcoming Europe Code Week. I've talked with a few developers and I've noticed that they haven't heard about Code Week, which is a real shame, at least in my opinion. Code Week is an initiative which first launched last year by nearly cruise young advisors with some help from the European Commission. And this year will be the second edition of Code Week, which will take place from the 11th to the 17th of October. It has a simple purpose. It aims to bring more people interested in coding by showing them that coding is fun, that coding is interesting, and that it's a very powerful tool you may have. So how does it work? People from all around Europe are encouraged to organize local code events or workshops during Code Week. The events are mostly independent from each other and anyone can organize a code event, including you, especially the people from this room. Up until now, we have over 400 events planned, participating for Code Week, from countries all across Europe, including ones from Turkey, from Moldova, and countries you may, all countries. So the event has almost no, there are almost no restrictions about the format of the event. It's preferable that the event is as beginner-friendly as possible and as accessible to people with little or no previous programming experience. But even that is not a hard requirement. It can choose your own tools, your own format, your own technologies. These are all up to you. The target audience are people from all ages, especially students and children. And just any event of any format which will open the doors to coding to more people will do. So let's say you're interested. What can you do? There are at least three things you can do. Firstly, you can look for existing events in your local country and get involved by helping them. There are quite a lot as you already know, but nearly not enough. Secondly, you can organize your own event. It's really not that hard and it's extremely fun and extremely rewarding. And there is a great guide on how to organize your first event on the Cold Week website. Thirdly, you can help with online stuff like gathering beginner-friendly programming resources in your local countries language or just popularizing local coding events or just the Cold Week initiative as a whole. So if you decide to get involved, the first thing you should do is find and contact your local Cold Week ambassador. Each country has at least one. Spain has five, for example. And these are the people who are responsible for encouraging local events to happen. They should be in the loop of what's being planned so get in touch, contact them. This talk, along with some links and some contacts, you can find on bit.ly slash Cold Week Barucho or you can just Google Europe Cold Week and you'll find it. And you know, if opportunity presented itself, I would probably gladly join an engineering effort to create a virus to automate spreading the passion to cold to other people. But since that's not possible, thank you. Okay, I don't have time for you to clap. I like Ruby. I don't like Listerals. Listerals are ugly. This is ugly. That's a Listeral string, it's ugly. 23 Listeral numbers, ugly. Boolean Listerals are ugly. Array Listerals are also ugly. What I do like is calling methods on objects. That is pretty. Look at that, beautiful. I like newing up classes. I find that beautiful and pure. So, let's burn our Listerals. Let's program in Ruby without Listerals. Go. All right, first of all, we have to use the right Ruby. Ruby 2.0, patch level 451 is the correct Ruby for doing this programming exercise. It doesn't work in 193 because the date constant is not there until you require date. This will become important very soon. Okay, so Booleans, Booleans are easy. You'll see this is a new IRB session. If I do not date, I get a false because everything's truthy and opposite of that is false. Awesome. Now if I require date to s down case, so not literal date string, I get true because the first time you call require, you get true. Awesome. No literal Booleans. Okay. You've got to be careful though because the second time you call it, you will get false. So just keep track of what you're doing. It's very intricate this programming exercise. All right, numbers, numbers are great. So now we've got date, I've required it in. You'll notice this is line four of my IRB session. So I can do date.civil.year and date.civil, I don't know why I use that. I could just use date.new, but like, a date just has 4712 BC, that's the year, it just is. So we can convert that to a float as well. And of course, you can just add ones to these things or you could subtract it from yourself, you get zero. And then you just do maths to get all the others. Just get on with it. All right, hashes, hashes are great. I'm gonna use date again. So date has some great methods, a load of them, but this one is the best. In fact, it's the best method in Ruby, full stop. Underscore jizx0301.  That's pretty cool, an empty hash. Yeah, in the first version of this talk, I passed it the literal hash please, but then I was using a literal string, so it was ugly, I had to get rid of that. All right, arrays, literal arrays are ugly. So I struggle with this because you can do lots of things, but they're all sort of either cheating or not funny. So what I could do is I could get that hash that I just made with the jizx0301 method and I could call the array function, which makes an array out of a thing and then I'd get an empty array, which is funny, but it's cheating because I've used the word array, right? Or I could do object methods, which is a list, and then subtract object methods, which is also a list, but that's not funny, I mean that's just a property of arrays. So wait a minute, what if I close this IRB and start again, right? Date methods in that new IRB, remember the date constant is there, but it doesn't have any methods that aren't on object, right, so I can just take that list and take away object methods, beautiful. Of course now I've got nothing that I built up before, but never mind, we'll just do it again. All right, nil, nil's really easy, nil's everywhere and really. So my favorite way to get a nil is to grab a hash and then call the default proc method. Who knows what default proc does? Oh, a few people. All right, so there's a way of initializing a hash with a default proc, so what that will mean is if you call a key, like try and access into the hash and it's not there, it will run this proc and give you that pretending it's the value. So a normal hash doesn't have a default proc, so there's a nil. Oh, wait, it doesn't work, right, because I forgot to require date. So let's require date again, call that, I've got a nil, there we go, beautiful. All right, let's do strings, strings are fun. So the first method on self in an IRB session is 2S, that's handy, so I could inspect that and I've already got a string, but it's not the string I want, I want to get a specific one. Hi, everyone. Yeah, I'm gonna talk about my favorite algorithm. My favorite algorithm is called the Burrows-Wheeler Transform. This was invented in 1994 by Michael Burrows and David Wheeler. It's used in data compression and genomics and stuff. It's my favorite algorithm because it has this kind of extremely high cleverness to complexity ratio. It's sort of simple enough for anyone to implement, but it's kind of mind-blowing that it works, so I just wanted to show it to you quickly. The way it works is you take a string, it operates on strings, so you take a string like banana, and then you write down all of the possible rotations of that string, so if you rotate banana by one character, you get a nana with B on the end. If you rotate it again, you get the naba. If you rotate it again, you get a naban, and if you rotate it again, you get nabana, and then the final rotation of that string is a banan. So once you've got this table of all of the rotator, the rotations of the string, you then sort it alphabetically. So now you've got this alphabetical table of all the rotations of banana, and then you just read off the right-hand column, so NNBAAA, that's the output of the Burroughs Wheeler transform, so that's pretty easy to implement in Ruby. This is my Ruby implementation of it. Let me show you briefly how this works. We start off with a string, like banana, and then we take the characters of that string, so split it apart into its individual characters, and then we call each index on that array of characters to get an enumerator of all of the indexes, so zero, one, two, up to five, and then we call map. We map the rotate method of the character's array over that collection of indexes, so what that means is rotate that array by zero and then rotate it by one, all the way up to rotating it by five, so that's our table of all the rotations of banana, and then we sort that array to get the sorted rotations, and then we map last over those to get the final character in each array, and then we just join them together, and that's the answer. So now I've got that Burroughs Wheeler method, and I can call it with the input banana, and I get my NNBAAA on it. If I pass in a longer string, like the rain in Spain stays mainly in the plane, then you get output that looks like this. So the point of this is that that output is easier to compress than the original because it tends to put similar letters together, so you could use some kind of run length encoding scheme to compress this instead of storing I, I, I, I, I, I, you could just store six I. So that's good, but the downside of course is that it's completely scrambled our original string, but the amazing thing about the Burroughs Wheeler transform is that it's reversible, so we can write an implementation that makes that go backwards. But how's that possible? At first it looks like we've lost, we've thrown away too much information about what order those characters have to go into, but actually we haven't, we've got enough information to be able to reconstruct that table. I mean firstly we know that there must be six by six characters in that table, and also we know what the last column is because that's the string that we've got. But because each row of the table is just a rotated version of the same string, we can rotate every row and get another version of the table containing the same strings but in a different order. So if I rotate all of the rows, that tells us what characters are in the first column. We haven't been told what order they appear in, but we know that the table's sorted alphabetically, so if we sort that alphabetically we now know what the first column of the table looks like. And of course we also know what the last column looks like because that's the string that we've got. And you can keep playing this game. If you rotate the table again, you can get all of the rows of the table in the wrong order and then you can sort it alphabetically to get them in the right order. And then you can just keep repeating that. So you fill in the final column from the string you've been given. You rotate all of the rows to get the same strings in the wrong order and then you sort them to put them in the right order. Fill in the last column, rotate them and sort them, fill in the last column, and then rotate and then sort. And then the last time you fill in the last column, you're done. The rows are already sorted and there's the string we started with. So this is pretty easy to implement in Ruby as well. This is my implementation. I don't have time to explain how it works. But now if I pass in my string into inverse borrows wheeler, I get the whole table, which does contain the string banana. If I pass in my encoded longer string, I do get a complete table, which somewhere in there contains the original string. Now the problem is, I don't know which one of those is the original, but you can fix that by just putting a marker character on the end of your original string. I'm gonna use the dollar sign so that when you get this table out, only one of the rows is gonna end with the dollar sign and you just pick that one out of the array. So the bits in green here, I'm adding a dollar sign onto the end of the characters and then when I decode it, I just pick the row of the table that ends with a dollar sign and then I chop it off before returning it. And then it works. When I encode it, I get a string that contains a dollar and then when I decode it, the decoder knows which row of the table to pull out. Thanks very much. Hi there, good afternoon. As you said, my name's Phil Nash. I am a developer evangelist at Twilio. Twilio is a cloud communications platform that allows you to send and receive text messages, make and receive phone calls. But that's not really the point of this. My problem is that my code is more popular than me. Now I don't mean on GitHub and sure I've got some code which has some stars, which is more than my followers, but I don't really know what following means on Twitter, on GitHub or whether a star means it's any good or not. What my problem is, is that my code has a better social life than me. And this gets embarrassing. Let me give you an example. Who recognizes this? Right, brilliant. Secret of Monkey Island, insults sword fighting. The story of Guy Brush, Three Pud, the swashbuckling pirate wannabe who wins his fights with insults.  Now, as you can see, like he only has 429 followers, that is more of my girlfriend, but not more than me. So that's not that much popular, but sorry, this is where he does. But he has more conversations than I do. Bastard. And you get like, if I ever get a notification on Twitter, it goes off in my pocket and it's normally him getting something, not me, retweets, favorites, messages, all that kind of stuff. I particularly like this recent notifications because that top response is actually from what I'm pretty sure is another bot who on occasion says you fight like a dairy farmer and then Guy Brush responds to him and then he responds back again, something weird. And the bots are now conversing amongst themselves. What is going on? So, there's the code actually. You can go and make one of these yourself. It's based on a gem called Tweet Bart, which is written by Corey Haynes. He originally wrote it to say good morning to people who said good morning and rapidly ran out of rate limiting on Twitter over and over again. So that's where you can set the response frequency. Guy Brush responds to everybody because somebody says how you fight like a dairy farmer a day, but not too many of them. And that's how you use it. And you can go and fork this. And actually, it's quite wonderful because Guy Brush's suit would now speak French as well.  So there must be somebody here in Spain who can sort that out for me to make him a bit more multilingual. I've got another example, though. It's another Twitter bot or something. You guys recognize this, Chuck Norris, Vin Diesel. There used to be a bunch of websites which liked to make up stuff about them and that used to be fun. Here's a quick bit of code, you don't need to see that. So there's some hilarious things that people say. I think this might be DHH's approach. And Vin Diesel doesn't have sunscreen, him and the son of agreement, which is nice. So you're already starting to see that these guys are pretty popular as well. They've got some retweets, some favorites. The second response down there is I love you, which I can't remember the last time somebody said that to me on Twitter. But it's more than that. Chuck Norris has 267,000 followers. I set this going, I think, in 2009 or something and it didn't do anything about it. And then later, bang. And you're like, Vin Diesel, 442,000. Now you might notice in this, this is a screenshot from today. And the last time he tweeted was in October 2012 because the site went down. There's actually a Chuck Norris Facts API which returns JSON, which is really very nice. But nobody decided to resurrect anything for Vin Diesel. So he hasn't treated since October 2012 and he still gets more followers per day than I do. Bloody bots are more popular than I am.  That is all I have to say. Thank you very much. Hi, so as I already said, I'm Grzegorz, I am nomadic programmer. And within the next four minutes, I want to share with you three lessons that I learned over the last eight months when I was constantly traveling around the world, working as a freelancer and basically living in hostels, staying at my friends and in some guest houses. So to get to first lesson, we need to go back in time a little bit. A little bit done a year ago, I got burned out. I had really cool job, really great team from which I could learn a lot, but suddenly I stopped enjoying my work. And what do you do when you stop enjoying? Well, I started pushing harder and when it didn't work, I started pushing harder even more and then I ended up being burned out. And this was really, really horrible feeling. I wanted to give up my developer's career. I wanted to quit programming and doing something else, but as I can't do anything else, here I am again. So the lesson number one is do not get burned out because it's really bad and now I am sure that it's better to prevent it than to recover from burnout. What can you do? You can of course take some break. You can switch teams at your work. You can start some pet projects. You can go on holiday for a few weeks. Just try to avoid burnout because it's really, really bad. In my case, it didn't let me to giving up my developer's career, but it led me to quitting my job and I had no idea what to do with my life. So I thought, okay, let's do something funny, like buy the tickets to the furthest place on earth and go there and think what to do. So this led us to lesson number two, which is about fighting my fears. I am a man of many fears and so are you. We all are afraid of lots of things. We just don't talk about it because these are our weaknesses. So I am afraid of heights and when I stay in skyscraper, I don't come close to the window because I'm then scared and I just need to keep the distance and when I swim, I am afraid of deep water. So when I swim, everything is fine and then at some point I realize that it's too deep for me to reach the ground by my feet and then I start panicking. Even though at just a moment ago, I was swimming with no problems. So fighting my fears was something that started with going to New Zealand. So it's farthest place on earth. I just bought ticket there, I went there, I left the plane, I had hostel booked for two days. So I left this plane and I said, okay, I'm in New Zealand. What can you do in New Zealand? They've got queues here, yeah? Maybe let's go and see some queues. So I left my comfort zone 17,000 kilometers from home and that's how my journey started and since then, now it's day number 256. I stayed over in more than 70 different places and I fought my fears. I jumped on bungee, I did scuba diving and I realized that I can do everything just because I left my comfort zone, just because I put myself in different contexts, led me to things that I would never do if I stayed at home. And story number three is about working in the middle of nowhere. This photo was taken in the middle of Taiwan in a hostel where no one spoke English, only Chinese, where there was no Wi-Fi, no hot water, but there was fridgey coverage. So I could listen to Spotify, I could watch Netflix and I could work and it appears that SIM card is actually the only thing that I need to work comfortably, okay, temperature, when you've got over 40 degrees, it's pretty hard.  And I say, yeah, and I've got a beach, like 20 meters from my work, from my hostel. So just after work I can go to my surfing lessons. So this is a matter of, this is a trade-off of comfort but not a trade-off of productivity. I can be productive working in Philippines and having these views just as much as I can be working in the office. So I know that lots of people want to try this lifestyle. So if you want to talk about it, just talk to me and I want to share and exchange my experiences with all of you. And until then, enjoy the conference, see you at the party.


The Ocpecpe Road race has resumed after two years of the suspension of the event due to the COVID-19 restrictions. The organiser of the race, Mike Itemuagbo, said all is now set to hold the eighth edition of the contest. On his path, the deputy governor of the state, Philip Shibu, reiterated the commitments of the state government in supporting the event, adding that plans are run the ground to making the competition an IAAF platinum label. We agree that we have to institutionalise this race and the process of doing that is already the input in place. Government support, we continue to come, we continue to support the race and the other areas that we have agreed to partner to make sure that this race is successful. We also want to I also want to join to apologise to our athletes. It's not our fault, pandemic came, stroke and we don't actually, we have to follow international back practice because the game is not a local game. It's an international race. For us, we are struggling hard and putting everything in place to make sure that we quickly get our gold label and possibly after that our target is to be a platinum race.