How I would set up Laravel with Docker

This is a quick brain dump for myself to remember how I set up Laravel with Docker. Hopefully it can help others out also.

I tried to avoid Docker for the longest time due to the ease of just running php artisan serve. However, when you have some dependancies that your site will rely on, Docker can be helpful — especially when having multiple developers — in getting up and running with the whole codebase easier.

This post assumes you have setup a basic Laravel project on a Linux computer, and have both Docker and Docker Compose installed locally.

What will this project use?

This is only a basic example to get up and running with the following dependancies. You can add more items to your docker-compose.yml file as you need to.

Note: whatever you choose to name each extra service in your docker-compose.yml file, use its key as the reference point in your .env file.

  • The main site codebase
  • A MySQL database
  • an NGINX webserver
  • PHP

docker-compose.yml

Have a file in the project root, named `docker-compose.yml

version: "3.3"

services:
  mysql:
    image: mysql:8.0
    restart: on-failure
    env_file:
      - .env
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
  nginx:
    image: nginx:1.15.3-alpine
    restart: on-failure
    volumes:
      - './public/:/usr/src/app'
      - './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro'
    ports:
      - 80:80
    env_file:
      - .env
    depends_on:
      - php
  php:
    build:
      context: .
      dockerfile: './docker/php/Dockerfile'
    restart: on-failure
    env_file:
      - .env
    user: ${LOCAL_USER}

Dockerfile

Have a Dockerfile located here: ./docker/php/Dockerfile. I keep it in a separate folder for tidiness.

# ./docker/php/Dockerfile
FROM php:7.2-fpm

RUN docker-php-ext-install pdo_mysql

RUN pecl install apcu-5.1.8
RUN docker-php-ext-enable apcu

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php -r "if (hash_file('SHA384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
    && php composer-setup.php --filename=composer \
    && php -r "unlink('composer-setup.php');" \
    && mv composer /usr/local/bin/composer

WORKDIR /usr/src/app

COPY ./ /usr/src/app

RUN PATH=$PATH:/usr/src/app/vendor/bin:bin

default.conf

Have a default.conf file for the project’s nginx container saved here: ./docker/nginx/default.conf

# ./docker/nginx/default.conf
server {
 server_name ~.*;

 location / {
     root /usr/src/app;

     try_files $uri /index.php$is_args$args;
 }

 location ~ ^/index\.php(/|$) {
     client_max_body_size 50m;

     fastcgi_pass php:9000;
     fastcgi_buffers 16 16k;
     fastcgi_buffer_size 32k;
     include fastcgi_params;
     fastcgi_param SCRIPT_FILENAME /usr/src/app/public/index.php;
 }

 error_log /dev/stderr debug;
 access_log /dev/stdout;
}

Add the necessary variables to your .env file

There are some variables used in the docker-compose.yml file that need to be added to the .env file. These could be added directly, but this makes it more straightforward for other developers to customise their own setup.

MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=example
LOCAL_USER=1000:1000

The MYSQL_ROOT_PASSWORD and MYSQL_DATABASE are self-explanatory, but theLOCAL_USER variable refers to the user id and group id of the currently logged in person on the host machine. This normally defaults to 1000 for both user and group.

If your user and/or group ids happen to be different, just alter the variable value.

Note: find out your own ids by opening your terminal and typing id followed by enter. You should see something like the following:

uid=1000(david) gid=1000(david) groups=1000(david),4(adm),27(sudo),1001(rvm)

uid and gid are the numbers you need, for user and group respectively.

Run it

Run the following two commands separately then once they are finished head to http:localhost to view the running code.

Note: This setup uses port 80 so you may need to disable any local nginx / apache that may be running currently.

docker-compose build
docker-compose up -d

Any mistakes or issues, just email me.

Thanks for reading.

The Silent Scream (Hammer House of Horror episode 7)

The Silent Scream may be one of my favourite episodes from the Hammer House of Horror series. It doesn’t contain any deaths – not of people anyway – and doesn’t really have much in the way of gore. But where this episode excelled for me was on the psychological level.

Plus, escaped nazi war scientists always bring with them a particular brand of horror for me. Memories of American Horror Story‘s Dr. Hans Grüper.

Lay the right bait, and almost any creature will walk in of its own accord.

Martin Blueck to Chuck Spillers

Main Characters

What is The Silent Scream about?

Chuck Spillers, played by the excellent Brian Cox, is fresh out of jail and back into the loving arms of his wife, Annie – played by TV actress Elaine Donnelly. Whilst in prison he was visited regularly by an older man, Martin Blueck – played by the ever-charming Peter Cushing. Blueck would talk with him and give him money for his time. Although this initially seemed very generous, it is soon apparent that this was just bait; grooming him for what was to come later.

True to his word, the day after his release Chuck goes to visit Blueck at his place of work – a pet shop in the centre of town. He goes to say thank you to this old man whom he now considers a friend. Blueck then offers Chuck a job, only in a secret back area of the shop.

Re-united

In the back is a large warehouse where Blueck keeps all manner of dangerous and exotic animals in cages. These include Lions, Tigers, Panthers and Baboons. What is perhaps more surprising for Chuck, is the fact that the cages all have their doors open.

Blueck explains his ambitions to create zoos without bars, where animals can walk freely and still be of no danger – something that Chuck sees the benefit in having just been released from jail. These animals have been conditioned to know that the open doors do in fact contain an electrical field that will instantly kill any who attempt to pass through. Only after the power is turned off, and the loud buzzer is rang, is it safe to briefly step out to get their prepared food.

Chuck dutifully tends to the animals each day whilst Blueck is away, as he is paid to do. However, Chuck’s attention is continually drawn to a safe housed in the wall on the second floor of the warehouse. He knows he has the skills necessary to open such a safe and obtain the potential fortune within. But his greed may well be his undoing.

Prisons without bars — my thoughts

Imprisonment is a big theme in this episode: Chuck has just been released from jail, where he found the confinement particularly hard to cope with; the animals being housed in their open cages with fear of death on exit in Blueck’s warehouse; and even the limitation of locations in the episode. For the most part we are either in the Spillers’ kitchen or Blueck’s shop.

On writing this it even occured to me that perhaps the prisons that these character’s carry within them are of importance too. The way that Chuck’s desire for more leads him to crack open the warehouse safe, causing his own imprisonment by Blueck.

A Leopard sits in its cage

Or even the way that Annie is still bound to Chuck with love, even after his greed and criminal actions lead directly to his being imprisoned. And her being bound to him, attempting his rescue, leads to her own capture by Blueck.

And finally Blueck himself. His desire to experiment on Chuck and Annie, to create a prison without bars, ultimately leads to the overlooking of his most dangerous captive animals – sealing his own fate

I found this episode to have a good amount of tension — the most poignant moment just has to be that scene with the puppy. Although not gory, it still manages to leave it’s trace across the rest of the episode. I didn’t find the lack of blood and conventional Hammer Horror deaths to be a thing I particularly missed either. I mean, a bit of gore can be fun alot of the time, but in this story the suspense and tension were balanced enough to carry it on their own.

The ending was suitably nightmarish for me, although I could see it coming a mile off. This was simply due to a previous scene with Blueck driving away from a location in his car. It was a shame, because had it have been edited in a slightly different way, I believe that the closing scene could have been much more of a surprise twist.

Summary

I loved this episode. The over-arching theme of imprisonment and being beholden to the desires we carry within us was an interesting one. Some of these episodes can be a bit hit and miss for me, but there are enough good quality episodes, like The Silent Scream, that really hit the mark.

I enjoyed seeing the legendary Peter Cushing in the role of Blueck. I was so used to him portraying the side of good, like as Van Hellsing in the Dracula films and Sherlock Holmes in The Hound of the Baskervilles. So it was a real treat to see him in such a dark role.

(I know he played Grand Moff Tarkin in Star Wars too, but I’m only thinking of the more horror-themed films here)

Also Brian Cox playing Chuck Spillers. He has one of those faces that I knew I recognised – I just couldn’t remember from where. Then I read his filmography and saw, amongst many other entries :

1995BraveheartArgyle Wallace

Instant recollections of the opening scenes from Braveheart hit me. That’s where I know him from!

What Is the Fediverse?

The word Fediverse comes from the joining of the words “Federated” and “Universe”. It encompasses web-based social software that is inter-operable through open protocols1 and gives each person full control over their own website and data.

(of a country or organization) set up as a single centralized unit within which each state or division keeps some internal autonomy.

federated, from Oxford living Dictionaries

Where are we now?

Modern social technology, for the most part, revolves around huge central areas of power. Places like Facebook, Twitter, Snapchat, Google have become household names. But these sorts of companies are not conducive to a free and open world.

These central powers monopolise much of the communication between people and fully own and control the data that they collect from said communications.

Not only do they own that data, but it is their core business models to learn as much as possible about us and monetise that data for their actual customers – their investors2.

Not only is this dangerous to a free and open world, and along with it freedom of speech, but it also strips people of their control over a huge portion of what it means to be a human being on the planet Earth today – their personal data.

Data about people, is people.

Aral Balkan, Cyborg Rights Activist

Huge leaps in the right direction

The Fediverse tips the current digital social system on its head, by enabling people to take back ownership over their digital selves. With certain services that are available, you3 have the ability to choose alternatives to mainstream technology – you have the ability to take back control, as these federated services have decentralisation built into their core.

This decentralisation removes the giant centres we’re used to seeing, leveling the playing field and giving each person an equal place from which to speak.

Yes, you would need to set up your own installation, or have somebody with the know-how you trust do it for you. But once you have that freedom with your very own digital home – that you truly own and control – it’s very liberating.

Let’s use a service called “Mastodon” as an example here. Mastodon is often described as being a federated Twitter, which it is, but I think it’s important to really hammer home what that actually means. And the principles I will describe here apply to many other types of federated social sites. For example: Peertube – a federated youtube contender; and Pixelfed – a federated Instagram clone.

It’s also worth saying that when we say something is a federated version of a current site, that current site has zero to do with them – it is just a way for people to grasp what the given federated site offers by way of general features.

Mastodon, for example

Mastodon is not just a single website. It is an open source project that can power anybody’s website.

Me trying to explain mastodon in a single line.

If I have my own installation of Mastodon (each installation is known as an Instance, by the way), then I have my very own Twitter-like website where I can share my thoughts and images with anybody who would care to read them. And if you had your own instance of it, you could do the same.

For example, if:

We would be at completely different web addresses. However, we would still be able to communicate with one another, thanks to the way that mastodon works. (In comparision, everyone who uses Twitter goes through https://twitter.com. So talking to one another there takes place in Twitter’s house, as it were). With federation, the communication is done so between the people involved; from their own homes.

What makes the Fediverse federated, is its ability to enable people to have their own self-controlled instance of a service and still be able to connect with other people as we have come to love4 about Twitter et al. And imagine that, but with thousands and thousands of instances – all able to talk to one another.

It’s going to be a long hard road out of our current situation, but it all starts here – in the Fediverse.

And it doesn’t stop there.

Cross-service communication

A big tennet of federated services, is that there are no lock-ins to any particular one.

Earlier on I mentioned some other federated services – Peertube (for video sharing) and Pixelfed (a federated version of Instagram). Let’s suppose that I have a friend who has an instance of Peertube, where they share video reviews on, let’s say the Australian soap “Neighbours”. And let’s suppose I wanted to get updates from that friend, but I only have my own Mastodon site. Wouldn’t it be cool if I could follow his Peertube site, but from my Mastodon?

You already know what’s coming doing you? 😀

You can!

For example, I can follow a content creator from their own instance of Peertube, and have their messages come through in my mastodon feed. This is the exact opposite of how we are currently used to seeing online services. The big social networks have lock-ins to their own walled gardens – the Fediverse is a huge open park where people can choose to travel through it any way they wish.

The beauty, and extra special powers, of the fediverse is that it isn’t limited to a single service. The underlying protocols (ways that the sites communicate) are designed in such a way that they can be used by any service that wishes to implement them. And those messages still go from person to person – there is no central authority to trust and / or fear.

Joining the Fediverse

Right now, it is hard for none-tech people to get up and running with their very own instance of a chosen service. This is the fediverse’s biggest hurdle right now in my opinion, but it is still early days and hopefully things will get easier with time.

That being said, there are numerous community-driven instances of services that allow you to register on. This does go against that idea of self-control and ownership that I have been talking about somewhat. However, we all have to start somewhere and joining a popular community instance is a great way to try it out and even discover new friends. Plus, once you are comfortable in the Fediverse, there is nothing stopping you from starting your own instance later on down the road, should you have the technical knowledge or someone to help you do so.

If you would like advice, I’d be happy to help where I can. Email me at mail@davidpeach.co.uk.

I hope you, after reading this, will give the fediverse a try for yourself. This is freedom of speech at its best on the web right now, and I encourage you to give it a go for yourself. And if / when you do, come and say hello: https://mastodon.davidpeach.co.uk

In Closing

The fediverse is an agreement that the people who use social services online, indeed the entire web, should be in full control and ownership of 100% of their data. They should be free to be who they want to be, without being beholden to huge conglomerates whose only bar for success is profit for renting access to peoples private data.

Come on over and say hello.

Setting up my own Nextcloud (Version 16)

Setting up your very own Nextcloud server from scratch. This has been tested with version 15 and 16 of the software. Any questions, please do contact me.

Updated on: 24th June 2019

Set up a new server (with Digital Ocean)

If you don’t have an account already, head to Digital Ocean and create a new account. Of course, you can use any provider that you want to – I just happen to use them and so can only give experience from that.

Login to your account.

Setup your SSH key

In the next step we will be creating your new droplet (server), and you will need an SSH Key to add to it. This allows for easy and secure access to your new droplet from your local computer, via your terminal1.

If you are going to use the Digital Ocean console terminal, skip down to ‘Create the new “Droplet”‘, as you wont need an ssh key.

Creating the key (if you haven’t already)

If you haven’t generated an SSH key pair before, open a fresh terminal window and enter the following:

ssh-keygen -t rsa

Press enter through all of the defaults to complete the creation.

Getting the contents of the public key

Type this to display your new public key:

cat ~/.ssh/id_rsa.pub

This will give you a long string of text starting with ssh-rsa and ending with something like yourname@your-computer.

Highlight the whole selection, including the start and end points mentioned, and right click and copy.

When you are creating your droplet below, you can select the New SSH Key button and paste your public key into the box it gives you. You will also need to give the key a name when you add it in Digital Ocean, but you can name it anything.

Then click the Add SSH Key and you’re done.

Create the new “Droplet”

Digital Ocean refers to each server as a droplet, going with the whole digital “ocean” theme.

Head to Create > Droplets and click the “One-click apps” tab. Then choose the following options in the selection (Or your own custom selection – just take into account the monthly cost of each option):

  • LAMP on 18.04
  • $15/Month (2GB / 60GB / 3TB Transfer)
  • Enable backups (not necessary but recommended)
  • London (Choose your closest / preferred location)
  • Add your SSH key (see above)
  • Optionally rename the hostname to something more readable

Once you have selected the above (or your own custom options) click create. After a few moments, your droplet will be ready to use.

Set your DNS

Got to your domain name provider, Hover in my case, and set up the subdomain for your nextcloud installation, using the I.P. address for your new droplet.

I’m assuming that you already have your own domain name, perhaps for your personal website / blog. In which case we are adding a subdomain to that (so https://nextcloud.yourdomain.co.uk, for example).

But there is nothing stopping you from buying a fresh domain and using it exclusively for your new Nextcloud (https://my-awesome-nextcloud.co.uk).

I will be continuing this guide, assuming that you are using a subdomain.

You will add it in the form of an A record. This is how I would add it in Hover:

  1. Select your own domain
  2. Choose edit > edit DNS
  3. Click Add A record on the DNS edit page
  4. Fill in the hostname as your desired subdomain for your Nextcloud. For example if you were having nextcloud.mydomain.co.uk, you would just enter nextcloud.
  5. Fill in the I.P. address as the I.P. address of your new Droplet in Digital Ocean.
  6. Click Add Record

Configuring the server

Install all the required programs for Nextcloud

First ssh into your new server:

ssh root@YOUR.IP.ADDRESS.HERE

When we chose to install the LAMP option when setting up the droplet, it installed Linux, Apache2, MySQL and PHP. However, there are still some extra dependencies that Nextcloud needs to run.
Let’s install those next:

apt-get update

apt-get install libapache2-mod-php7.2 php7.2-gd php7.2-json &&
apt-get install php7.2-mysql php7.2-curl php7.2-mbstring &&
apt-get install php7.2-common php7.2-intl php-imagick php7.2-xml &&
apt-get install php7.2-zip php7.2-ldap php7.2-imap  php7.2-gmp &&
apt-get install php7.2-apcu php7.2-redis php7.2-imagick ffmpeg unzip

Download and install the Nextcloud codebase

Please note that I am using version 15.0.0 in this example. However, when you read this you may have a new version available to you. I will try and keep this guide as up to date as possible.

# Download the codebase and the "checksum" file.
wget https://download.nextcloud.com/server/releases/nextcloud-15.0.0.zip
wget https://download.nextcloud.com/server/releases/nextcloud-15.0.0.zip.sha256

# Make sure that the codebase is genuine and hasn't been altered.
sha256sum  -c nextcloud-15.0.0.zip.sha256 < nextcloud-15.0.0.zip

# Move the unzipped codebase into the webserver directory.
unzip nextcloud-15.0.0.zip
cp -r nextcloud /var/www
chown -R www-data:www-data /var/www/nextcloud

Apache config example

nano /etc/apache2/sites-available/000-default.conf

An example apache config:

<VirtualHost *:80>
        ServerAdmin mail@yourdomain.co.uk
        DocumentRoot /var/www/nextcloud

        <Directory /var/www/nextcloud/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <IfModule mod_dir.c>
            DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
        </IfModule>

RewriteEngine on
RewriteCond %{SERVER_NAME} =nextcloud.yourdomain.co.uk
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
a2enmod rewrite && a2enmod headers && a2enmod env && 
a2enmod dir && a2enmod mime && systemctl restart apache2

A quick mysql fix

In recent versions of MySQL, the way that the mysql root user connects to the database means that password authentication wont work. So firstly we need to alter that user to use password authentication.

apt install mysql-server
mysql

# In the mysql mode
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_secret_password';
FLUSH PRIVILEGES;
quit

SSL with Let’s Encrypt

apt install certbot
certbot --apache -d nextcloud.yourdomain.co.uk

You will then be asked some questions about your installation:

  • Email address (your… umm… email address :D)
  • Whether you agree to Lets Encrypt Terms of Service (Agree)
  • Whether to redirect HTTP traffic to HTTPS (choose Yes)

Let’s Encrypt will handle the registering of the apache settings for you new ssl to work. It uses the server name you entered in the 000-default.conf file earlier.

It will also create a new file that is used by Apache for the SSL. For me, this file was at /etc/apache2/sites-available/000-default-le-ssl.conf.

First Login!

Now go to https://nextcloud.yourdomain.co.uk and you should see your nice new shiny Nextcloud installation.

Creating the admin account

Fill in the fields for your desired name and password for the admin account. You can just use the admin account as your main account if you will be the only one using this Nextcloud. But you can give others access to this site with their own login details, if you wanted. But without the admin-level priviledges.

For the database fields, enter root as the username. Then for the password, use the one that you set in the previous mysql command above. For the database name choose whatever name you wish, as the installation will create it for you.

Click finish.

After a few moments time, your nextcloud instance should present you with the landing screen along with the welcome popup. Go ahead and read it and you could even install the app for your devices as it will suggest.

Finishing touches

If you click the cog icon in the top right of your screen, followed by settings in its dropdown, you will come to the main settings area. In the left-hand column, beneath the heading “Administration”, you should see the link for “Overview”. Click it.

Now you should see a bunch of security and setup warnings at the top of the page. This is nothing to worry about, it is simply telling you about some actions that are highly recommended to setup.

We will do that now. 🙂

The “Strict-Transport-Security” HTTP header is not set to at least “15552000” seconds. For enhanced security, it is recommended to enable HSTS as described in the security tips.

All that is needed to fix this first one, is a quick edit to the apache config file that Let’s Encrypt created for the installation.

nano /etc/apache2/sites-available/000-default-le-ssl.conf

And then add this following three lines within the <VirtualHost *:443> tag.

<IfModule mod_headers.c>
    Header always add Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>

And then reload apache:

systemctl reload apache2

Refreshing the settings page should see that warning disappear.

No memory cache has been configured. To enhance performance, please configure a memcache, if available.

Open up you Nextcloud config file:

nano /var/www/nextcloud/config/config.php

At the bottom of the config array, add the following line:

'memcache.local' => '\OC\Memcache\APCu',

Refresh your browser and that next warning should now vanish.

For future reference, you can always take a look in the sample Nextcloud config file at /var/www/nextcloud/config/config.sample.php. It will show you all available config options.

The PHP OPcache is not properly configured.

With this warning, Nextcloud should display some sample opcache code to paste over. This one caught me out as I couldn’t work out which ini file this example code should go.

After some trial and error, I discovered that for me, it was located in an opcache.ini file:

nano /etc/php/7.2/mods-available/opcache.ini

Then at the bottom of the file, I pasted the following:

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Reload apache:

systemctl reload apache2

Some columns in the database are missing a conversion to big int.

I only actually came across this warning when I was creating a dummy Nextcloud installation for helping with writing this guide. You may not actually get it. But if you do, here’s the fix2:

sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint

This will warn you that it could take hours to do its thing, depending on the number of files. However, due to us running it right after the installation, will not even take a second.

The PHP memory limit is below the recommended value of 512MB

To fix this, I just had to edit the following file:

nano /etc/php/7.2/apache2/php.ini

Then alter the next line to look like this:

memory_limit = 512M

Then restart apache:

service apache2 restart

All Done

Once you refresh the settings page once more, you should see a beautiful green tick with the message “All checks passed”.

Good feeling, isn’t it?

If for any reason you are still getting warnings, please dont hesitate to contact me. I’ll do my best to help. Email: mail@davidpeach.co.uk. Alternatively you can head to the Nextcloud Documentation.

Statik on Playstation VR

Statik is one hell of a fun game to play. Lasting only a couple of hours, depending on whether you solve the puzzles of course, this game never got boring. Despite the fact that you spend the entire time with your hands locked in a box.

Locked in a box

Your hands are locked in a box within its VR world for the whole game, whilst in reality you take a hold of the standard PS4 controller. That controller is used in very inventive ways throughout the game to try and solve each puzzle.

Each level gives you a new puzzle to solve, which become increasingly tricky and mind-bending as they go on. Each button, whether it be the directional buttons; the shape buttons; triggers; or analogue sticks, will control individual parts of each box.

There are some puzzles that require you to hold the control bindings of a box in your mind all at once, with one particular box being on a timer. This gave me just the right level of stress to warrant fighting back against being put back a step or two.

It’s not just a box

A lot of the game must actually be solved by using the environment around you. Parts of the room and certain objects around will very subtle guide you through the cryptic puzzles. I found myself at times just dumb-founded without a clue on how to solve something. Until I would make a really clever connection between my box and something around me and I’d end up with a great big grin on my face.

My personal favourite was taking control of a small remote control camera buggy. As you move around to otherwise-inaccessible areas to solve its particular puzzle, you get live feedback to your box. It felt so trippy to be inside a VR game controlling a remote control car that can show you a live feedback of yourself in that chair.

So frickin cool.

A quick game that feels just right

Even though each game involves you solving a different box that has your hands locked within, the game never felt repetitive. Each puzzle was so different from one another that I ended up feeling like I’d been on a real test of the mind to get to the very end.

I completed the game in about two to three hours and that felt just right to me. I’d had my fill of that particular world, but could probably have played just one more level.

I guess that’s one of the marks of a really good game – leaving the player wanting just that little bit more.

In Summary

If you want a challenging mind-bender of a game with truly ingenious uses of what the PlayStation VR can do, please do check out Statik. This game was a random recommend on a list of “best PlayStation VR titles” I stumbled across, and I’m so glad I picked it up on the PlayStation store.

Thoughts on A Nightmare on Elm Street

A Nightmare on Elm Street is one of the most recognisable titles in cinema – as is it’s villain, and star, Freddy Krueger. I felt the urge to re-watch this film after my recently-formed gaming obsession with Dead By Daylight. I was pleasantly surprised by the fact that much of the film still holds up to modern viewing.

What is A Nightmare on Elm Street about?

Behind the scenes on A Nightmare on Elm Street

A Nightmare on Elm Street follows four high-school kids, who are all experiencing almost identical nightmares. Nightmares about a mysterious burnt man in an old jumper and hat with knives for fingers. This figure is none other than one of cinema’s most charismatic antagonists – Freddy Krueger.

Freddy has long been dead, but has since returned to feed on children’s fear within their dreams in order to kill them. While alive, Freddy was exclusively a child killer – and possibly worse in the originally draft – which makes him one of the most despicable of his contemporary killers. Yet, perhaps intentionally, this is juxtaposed with his bouncy, playful actions and the fact that through the course of his films people have come to regard Freddy as a “cool character”.

It isn’t long until one of the children Freddy is hunting, Nancy, takes it upon herself to stand up and fight back against him. This ultimately leads to a showdown where you’ll want to throw your fists up and shout “Fuck Yer, Nancy!”.

A Nightmare on Elm Street artwork

The Effects still hold up

When the Matrix came out in 1999 it blew most people away with its cutting-edge, computed-generated, effects. Less than ten years later and those effects sure did start to look dated – more so now. However, with films that focused on created actual physical effects, this dated effect is lessened quite substantially in my opinion.

A Nightmare on Elm Street, although cheesy in parts, still holds up strongly with its physical effects. Especially those bedroom death scenes from both the start and end of the film. R.I.P. Johnny. And Freddy is every bit as menacing and full of charisma as I’d remembered from watching it years ago.

Nancy in the bath
Nancy in that famous bathtub scene

It’s great when modern films take a leaf out of the books of films like this one. You really can’t beat the authenticity of good-old physical effects. Especially in horror.

A personal favourite favourite of mine of all the film’s effects, is when Nancy is asleep at Tina’s house. Freddy can be seen pushing his way through the over-arching bedroom wall from the other side. And although it’s not too difficult to work out how this could be achieved it is still effing terrifying and highly effective.

Freddy is still rock n roll

Nancy and Freddy

Freddy Krueger is one of those pop culture horror icons who sits beside all of the greats. He sits with characters such as Michael Myers; Pinhead; Jason and Leatherface. He was played so perfectly by Robert Englund and like Doug Bradley for pinhead, will always be tightly linked to his seminal role.

Interestingly what differs Freddy from many of his contemporaries, is his sense of humour and playfulness with his victims. Michael Myers was a silent shape in the darkness; Jason too was silent; Pinhead spoke only in a deep, almost poetic manner. But Freddy just toys with his victims in his cheeky, tormenting way.

Freddy has been a really fun villain to revisit and I’m looking forward to re-watching the other films too. This includes one I’ve never seen before – Wes Craven’s New Nightmare. I’ve heard good things about it so will get a hold of that when I can.

In Summary

A great horror film that I think still holds strong today. Wes Craven unknowingly created an icon that would go on to become a household name – like Kellogg’s Corn Flakes and Coca Cola.

If you’ve never before seen A Nightmare on Elm Street, I urge you to give it a watch. Yes there are some aspects of it that will be dated, such as the fashions and the acting in places. But this really is an important horror film like all of the top films lists repeat. You wont sleep easy till you watch this film.

Until Dawn Rush of Blood on Playstation VR

Until Dawn Rush of Blood is so much fun to play. The concept of being essentially trapped in a roller coaster cart adds a new dimension to what is possible with a horror game. You have no option to just stand in a corner and catch your breath before moving on. You are either fighting for your life or being moved ever forward into the increasingly hellish world.

Remains true to the original

Until Dawn is a stand out game and still stands up to this day. It was nice to see that the look and feel of the original was maintained with Rush of Blood. Riding gently around Blackwood Mountain and the surrounding forest was just as atmospheric as I remembered.

With Rush of Blood

I actually felt the uphill pull

I was amazed when the cart I was in started up a steep climb, that I actually felt the pull back that you would normally expect from gravity. I know that it’s not gravity but instead probably just me tensing my own muscles in the same way. But it really is such a genuine feeling that the horror that I knew was coming had even more of a degree of terror to them. If going up a roller coaster climb felt real, what the hell will it be like when I was getting killed by hoards of killer mannequins and clowns.

I was soon to find out.

In summary

This is a completely different game to Until Dawn. Although the locations do take you through certain set pieces reminiscent of the original, the style of game play is far removed. Until Dawn Rush of Blood is an all-out arcade shooter. And a bloody fun one at that. But don’t be fooled by its premise – this game has moments of true terror. Even though there were moments when I could predict what a particular jump scare was going to be, it was no less effective.

Life is Strange: Before the storm episode 3 (Hell is Empty)

It doesn’t seem like too long ago since Life is Strange Before the Storm was first announced. Now here I am writing up my thoughts on it’s heart-felt, bittersweet conclusion.

In this final episode we follow Chloe as she works to uncover the truth, and whereabouts, of Rachel Amber’s birth mother. As she does so, she manages to uncover some dark truths about certain characters. As we’ve learnt from previous events in this game, most things can’t simply come down to just good or bad; right or wrong. It tends to be dependant on a given character’s perspective.

I’m a little sad that this game has come to its end. However, we do still have the bonus episode with Max and Chloe to look forward to early in the new year.

Everyone has good and bad

Life Is Strange Before the Storm is a game that is great at showing how all people have both good and bad sides. All the characters here are as fully fleshed out as we have come to expect in Arcadia Bay. We’ve seen Chloe do bad things and let people get hurt – but for her love of Rachel. We’ve seen David and his militarist approach to parenting – but then in episode 3 we actually see him soften somewhat to meet Chloe on a middle ground.

But the characters I found perhaps most interesting in forms of their actions and moral compasses, are Rachel’s (birth) mother and father.

Rachel’s father goes through many different guises through Chloe’s eyes as the more she uncovers, the more she learns of his actions and motives – motives that are perhaps ill-advised at times. Meanwhile her Mother, who is initially painted as the bad guy, gets a chance to speak for herself later on. She is a woman who has made mistakes, sure, but who is now willing to give up everything for what she feels is right.

You will have a hard choice to make at the end of this episode, which will hinge on whether you want to do what’s right, or what’s good.

The world of Life Is Strange is well known now for its ability to show us fully fleshed-out characters. People who at first appear one way, but later – after the peeling back of layers – show us that there is so much more beneath. In good ways and bad. Before the Storm has continued this tradition with flying colours.

So much more than a prequel

Life Is Strange Before The Storm is just as good, sometimes even better in my opinion, than its predecessor. The focus in on Chloe and Rachel’s blossoming relationship has been an absolute joy to watch. I think now, after seeing their meeting and subsequent story together, that playing through the original game will be a fresh experience. Rachel is no longer just a face on a missing persons poster. Rachel is a complex young woman whose very presence seemed to bring out the best in people – not least of all Chloe Price.

What impressed me also about the developer’s approach to this story, is that it is not just a prequel that is heading towards what we know comes later. These three episodes are completely self-contained and serve their own narrative, which is done extremely well. I love how there is still enough time between the end of this game and the beginning of the original. Maybe we will see some more stories in the near future?

P.S. Stick around till after the credits

Make sure you stick around till the end of the credits on this one. Where in previous episodes there would have been the next trailer, we are instead shown something entirely different. Something that still makes my skin crawl now, just thinking about it.

Damn you Deck Nine!

Blue Lips [Lady Wood Phase 2] by Tove Lo

Lady Wood was one of my favourite albums from last year and still gets regular plays in my headphones. I was excited to say the least when I heard about Tove Lo’s follow-up Blue Lips [Lady Wood Phase 2].

A continuation of Lady Wood

This album felt more akin to the sweaty underground night clubs I imagine with her music. The kind of clubs where people are pressed tightly together; almost tasting each other’s sweat. The previous album had these moments but Blue Lips felt like these aesthetics were brought more into the foreground. The album’s intro and following lead single, ‘Disco Tits’, gave me the impression that a more deep bass / drum-driven collection of songs were contained.

There was a song from Tove Lo’s short film Fairy Dust, specifically the closing scene… that closing scene, that I didn’t recognise at the time. So I loved it when that very song, ‘bitches’,  came punching through my headphones to close off this album’s first half.

It’s not all boom boom boom

Although I like a good punchy beat-driven album now and again, I was relieved when I heard ‘Don’t ask don’t tell’, the album’s fifth track. It’s proof that she knows, as she sings on Disco Tits, how to dial it back. ‘Don’t ask don’t tell’ is more focused on her beautiful vocals and the direct message of acceptance she’s delivering to her other half in the song.

And baby, don’t ask, then don’t tell
Already know you’re fucked up
And it’s cool with me
My past and don’t ask and don’t tell
No need to share too much
Come on, let it be, ah (and baby)
dont ask dont tell – Tove Lo

dont ask dont tell – Tove Lo

This feeling is continued later in the album with the reminiscent ‘9th of October’, which actually started life as a poem that Tove wrote on her Birthday. This, along with the album’s closing track, ‘hey you got drugs?’, are two of my favourite songs from the album.

NSFW (not safe for work)

As I’ve come to expect from Tove Lo’s work, there is a high degree of sexual content in these songs. She’s definitely an artist who goes to places that other artists I listen to don’t. She’s not afraid of exposing herself, both physically and mentally, for her art and I respect that. I say that, not as a pervy guy just looking for filth, but as someone in admiration for her honesty and close to the bone approach to music.

Singers often sing about sadness; happiness; fear; love. But very rarely do they venture into the realms of the sexual. This too is an important part of what it means to be human, so why shouldn’t artists explore these issues too? Tove Lo seems to make up for the more reserved artists by spending a good portion of her album there.

In Summary

As great an album as I have come to expect from Tove, following her Lady Wood. Blue Lips is the continuation of her exploration and revelations in her relationships and the emotions they bring. Although I didn’t find this album as accessible initially, I still love to listen to it when the mood hits me right. And don’t take me to mean less accessible as a bad thing – it’s not. I just find Lady Wood a lot easier to listen to at any time, whereas Blue lips has its time and place for me.

Rise of the Tomb Raider Blood Ties on PSVR

Rise of the Tomb Raider Blood Ties came with the base game as part of the Tomb Raider 20 year celebration. I have previously written about my love for Rise of the Tomb Raider. However, I was not prepared for just how amazing the Blood Ties DLC would be in PlayStation VR.

The same blood ties story

Blood Ties on PlayStation VR is the same story as the normal version. The only difference is that you get to see through the eyes of Lara Croft in the fully immersive environment of Croft Manor. And wow – what a difference it makes. I loved the DLC as it was – I had bought it originally on Steam and played it straight through. But my first job with any new console is always to buy a Tomb Raider game. So with my PlayStation 4 Pro, I bought Rise of the Tomb Raider 20th year celebration.

The story line has you exploring the manor in order to find her father’s will. Her uncle, Atlas, claims ownership over the manor and so Ms Croft must uncover the will in order to save it. The insights into Lara’s past are interesting as you explore the various areas of the manor. I particularly found the mention of locking the butler, Winston, in the fridge particularly funny. This was a reference to the popular past time for many players of both Tomb Raider 2 and 3.

Also worth mentioning is the gramophone that you can turn on in the library. This will then trigger the playing of the popular Venice theme from Tomb Raider 2. Written by the hugely talented Nathan McCree.

You can taste the rain

Standing in the main foyer of Croft Manor is still one of my favourite things to do on PlayStation VR. Looking around at the beautiful architecture then up to the hole in the vaulted ceiling, I could almost taste the rain coming in. Just standing atop of the bookcases, looking down at the library, just fills me with awe at what the game developers have achieved with this DLC.

The story will take you to all the corners of the manor. Each and every nook and cranny pulled me in for closer inspection. The most atmospheric area for me was the cellar. Not only was the use of the PlayStation controller to control the flashlight highly effective, but I could feel Lara’s trepidation exploring these lower regions of the manor. If I didn’t already know what happens in this DLC, I’d have been scared walking around down there.

Levels of comfort

Like with many of the PlayStation VR releases, there are different levels of comfort available when playing through Blood Ties. The big one is the two options of movement. You can either use the teleport function, which is enabled by default, or use the free roaming option.

Teleport

Using the teleport option allows you to use the controller to gesture on screen where you want Lara to jump to. She doesn’t physically jump there, but there is a smooth use of a fade between the start and end point. If you are worried about motion sickness then this is the best option for you.

Free roaming

Free roaming is just as it sounds – free walking about the manor in the first-person perspective. This is so awesome to experience, however, I did begin to get motion sickness when I would turn one way whilst glancing around another. It was a similar feeling to when I would read a book in a moving car when I was a child. It is definitely worth trying out this option for a short time though – or longer if you can handle it.

In Summary

Rise of the Tomb Raider Blood Ties is absolutely effing incredible in PlayStation VR. In fact, it was incredible anyway – the VR aspect just enhances it to the nth degree. There really is no feeling like being Lara Croft for a while, wandering around the derelict halls uncovering her family story.

I am really looking forward to the next Tomb Raider game that was just announced. I am praying that the developers come up with even more exciting and awe-inspiring ways of incorporating the PlayStation VR experience into Lara’s world in her next adventure.