The future of Virtual Reality

This week I have started using my virtual reality headset and I have been totally blown away by it.

When you put on your headset you are transported to your virtual home, a spacious terrace on a mountaintop on a sunny day, with the birds chirping, the breeze blowing, and a beautiful mountainous landscape. In one wall of your virtual home you can manage your command center from which you can launch any VR application, and see which of your friends are online to play with. The sensation of immersion is perfect, after a few minutes you completely forget that you are not really in the virtual world, and after a few hours of VR, going back to the normal world takes a few seconds of adaptation. The realisation that you have been staring at a wall moving your arms around for hours is confusing.

Traditionally, videogames have always been limited by the screen size, the area of game was necessarily reduced to the size of the screen, hence your avatar in this world was small and so were the rest of creatures in it. This is no longer a limitation. Everything is life-size. You are transported inside the game’s world, for those of you who watched Tron, the movie, this is it. In “Star Trek Bridge Crew”  you are captain of the Aegis space ship navigating through the galaxy. When you look out the window, the immense size of the planets, meteorites and stars is breath taking. In “TheBlu” you are in the bottom of the ocean swimming with medusas, tortoises and whales. The sensation is very real and awe inspiring. In“Richie’s Plank Experience” you have to walk a plank on the top of a skyscraper and you are dared to jump off it. Even if I knew I was in the safety of my room in the real world, I could not command my feet to move. The sensation of vertigo was stronger than my brain’s logic. This is amazing!

One drawback that VR experiences have is that when your body is moving in the VR world but not in the real world, for example if you are piloting a kart, or a spaceship doing barrel rolls, your brain is not capable of understanding why your inner ear is not feeling the pressure of the centrifugal force and you get motion sickness. The sensation is similar to getting seasick. I know first hand.

Imagine working on your computer, not from a chair in the office staring at a couple small screens, but on the top of the Everest on a sunny day, in the bottom of the ocean, or in the center of the galaxy. Imagine your screen is not limited by size, but can be as large as the sky, allowing you have a 360 degree screen where you can leave your different applications. This is what Virtual Desktop does. Currently it has some limitations since the VR headset only has reading-resolution where your head is oriented, not where your eyes are looking. Google is working on a headset with human eye resolution using a trick tracking your eyes to see where you are looking at to maximise resolution in this area.

At any rate of advance in VR technologies, in the next 5-10 years it’s easy to foresee that VR graphics and sound will be indistinguishable from base reality. In this scenario, it would be possible for companies not to need to have physical offices for computer work. Workers could work remotely from their homes, teams would be distributed worldwide with a virtual office in the VR world. This office would be amazingly beautiful, spacious, sunny, with breathtaking landscapes. People would have avatars in this VR world which will allow them to have meetings, work together on projects, explain topics on a whiteboard…

bloomberg-on-oculus

Setting up a git server

In order to progress with my development projects, I needed to use a source control software, the best one for this is Git so I installed a Git server in one of my machines. I ran across some issues which I detail in the below steps list:

  1. Install Git in the server machine
    1. sudo apt-get install git
  2. Add a new user for git in the server.
    1. sudo useradd git
    2. passwd git
  3. Make sure to grant this user ssh access by editing /etc/ssh/sshd_config to add the line AllowUsers git
    1. sudo vi /etc/ssh/sshd_config
    2. sudo service sshd restart
  4. Test that you can ssh into the server with the user git from the client machine
    1. ssh git@server.name
  5. create repository in server
    1. sudo su git
    2. mkdir $HOME/gittestrepository1.git
    3. cd $HOME/gittestrepository1.git
    4. git init –bare
  6. create repository in client and add some files which simulate the code you wish to store in the git repository
    1. mkdir testgitclientrepo1
    2. cd testgitclientrepo1
    3. echo this is code>codefile1.txt
    4. git init
    5. git add .
    6. git commit -m “comitting code” -a
  7. Push the changes to the server
    1. git remote add origin ssh://git@katana.fritz.box/home/git/gittestrepository1.git/
    2.  git push origin master
  8. Anybody who wishes to download the code can do so with the following command
    1. git clone git@katana.fritz.box:/home/git/gittestrepository1.git
  9. After they modify the code, if they want to push it into git, they must identify themselves at least the first time.
    1. git config –global user.email “rogemadrid@gmail.com”
    2. git config –global user.name “Roge Retropie”
    3. git commit -m “modification from retropie” -a
    4. git push origin master
  10. When working in a distributed team, when you want to update your local codebase in the morning with the changes done by your colleagues, run
    1. git pull origin master
  11. If you have done changes to your local code which you wish to discard and overwrite your local copy with the latest server copy
    1. git checkout — .
    2. git pull origin master

 

git

Encrypting files with GPG

One of the concerns I have in this new world of cryptocurrency wallets is that I’ve never had a file that was worth thousands of Euros! Until now the worst thing that could happen (twice) was that I could lose all my photos…

The immediate solution I imagine to make sure I don’t lose my wallet is to make many copies of it and spread them around all my computers, gdrive and dropbox. But what if some hacker gains access to the file? He could somehow crack my password and gain access to my ETH stash!

The solution I have found so far is to keep several encrypted copies of my wallet. After doing some research I like GPG (the Gnu version of PGP) which is open source and has been around for a long time. This way, if the hacker gained access to this file he would first need to crack the encryption and the Ethereum password having 2 strong layers of complexity.

I’ve installed it so far in my Windows and Mac computers and it’s pretty straight forward.

  1. Windows:
    1. Go to https://www.gpg4win.org/ and download the windows executable (currently Gpg4win 2.3.2)
    2. Once it’s installed you can use the following programs:
      1. kleopatra: with this tool you can create and manage your certificates.
        1. Go to File>New Certificate>Create a personal OpenPGP key pair and follow the instructions. Don’t forget your passphrase! 🙂
          1. kleopatra
        2. Once you have your private/public key pair generated you may want to share your public key with the world so they can send you encrypted messages which only you can decrypt. You can do this by right clicking on your certificate and selecting “Export Certificates…”
          1. kleopatra1
        3. A file will be generated with your public key which looks something like the below picture. Put this in your blog, email signature, billboard… you can share this public key with no risk. People can use it to send you encrypted messages. You can see my public key here
          1. kleopatra2
        4. You may also want to export your private key, to copy it to another computer on which you will want to decrypt messages. Take care to ensure your private key is not shared with anyone. To do this right click on your certificate and select “Export Secret Keys…”
          1. kleopatra3
      2. GgpEx: You can access this tool by right clicking on any file and selecting the GpgEx menu. For example to encrypt a file right click on your file (for example your Ethereum wallet) and select under the GpgEx menu>Encrypt
        1. gpgex
      3. You will now see a new file with the extension .gpg This file is encrypted and can only be decrypted by you.
      4. To decrypt it you can right click on it>GpgEx Menu>Decrypt. Insert your password and the file is decrypted.
        1. gpgex1
  2. For Mac the idea is the same, I’m using https://gpgtools.org/
    1. You can create new encryption keys with “GPG Keychain”. You can also copy from a different computer the private keys that you have created (in my case with the windows computer) and import them by clicking on Import.
      1. gpgmac2
    2. Once the keys are generated (or imported) you can decrypt a file by right clicking on it and selecting “Services>OpenPGP: Decrypt File”
      1. gpgpmac

 

Thanks to this I can now export my Ethereum wallet. Encrypt it and save a copy in my google drive, which I can download to any computer on which I have my gpg private key in case I need to send some ETH.

Password Management

I’ve taken a leap of faith into the password management world. Until a month ago I used to be the living example of how not to manage your passwords… Kevin Mitnick would not have been proud..

I’ve started using keepass, a free tool which works under windows (and Linux and Mac with mongo) and provides one place where to store all passwords. Keepass uses AES encryption to keep passwords safe. To share my passwords amongst my computers I upload my keepass file to google drive, since it’s encrypted I’m not (too) worried that someone may get all my passwords (ok, I am still a bit worried, but I guess using the same password for every service is a worse alternative, or keeping them written down in my notebook..).

I have as a pending task to investigate lastpasssafe-in-cloud and 1password (are we really sending our passwords to the cloud? one leap of faith at a time for me… ) and find a tool that works securely in ios. (Update: Keepass has Minikeepass for ios, I’ve installed it and it works. It even can get a copy of the passwords file via dropbox)

 

keepass