Should we endorse the McPlant?

Admission: I am not a vegan. I try to have a balanced diet of both meat and plant based meals, but I have no desire to cut animal produce from my diet completely.

The rise in popularity of plant based products has saw consumer consumption in the market rise at an unprecedented rate, looking at the Google search statistics searching for the work ‘veganism’ has increased a massive 590% in the last 5 years. And the Fast food chains have started to cotton on to this growing trend.

We’ve had Greggs here in the UK launch with much success the vegan sausage roll and steak bake with further additions rumoured to be on the way. KFC released the vegan burger providing their iconic original flavour recipe on a meat-free alternative and now its time for king of the fast food industry McDonalds to throw its stake into the game with the impending launch of the community dubbed McPlant.

But aren’t these copy-cat, meat emulators creating a new problem?

My issue with plant based proteins that imitate meat counterparts is that they are not really any more sustainable than meat itself. If a time comes when the world has dramatically reduced its consumption of meat in favour of plant based alternatives, large swathes of fertile land (possibly that which is currently used for cattle) would be required to grow the quantities needed to meet current consumption habits. Since the plant based proteins are then refined to become something akin to meat, there is still that intensive process to create the plant based substitute. I can’t see why we wouldn’t have all of the existing problems that a capitalist society breed, such as deforestation to make more cattle farming space. The problem would surely only evolve to become deforestation to make space for more crop growing farmland!

Many of the arguments against the consumption of meat link back to animal cruelty and the practice of animals being bred and raised purely for slaughter. A shift to a plant based alternatives would help to address this of course, but bringing this article back to McDonald’s recent announcement of the McPlant, one has to ask how anyone who has chosen to ditch meat for animal cruelty reasons could then endorse a company like McDonalds?

The fast food chain happens to be one of the largest producers of meat in the world, with many of their farms having featured in documentaries and news reports exposing the appalling, squalid conditions that animals are forced to live in. The same animals that go on to become our McNuggets or Big Macs. Surely any vegan cannot in good conscience endorse a vegan plant based range developed by one of the worlds biggest animal killers, and can see the McPlant range for what it is – a marketing ploy and to tap into a new-ish emerging market.

I have no issue with anyone who chooses to follow a plant based diet. I think we should all take steps to reduce our meat intake. However I also think that there must be a better solution to climate change than replacing animal meat with a plant based substitute. As the supposedly superior race, it is arguably within our capabilities to find a truly sustainable solution.

I believe the first step towards sustainable tranquillity would be for human beings to adopt a ‘grow what you need’ idealism. This could be as simply as utilizing back gardens, green spaces and/or allotments to grow our own produce to support what we and our immediate family required. Admittedly to reach this equilibrium would require a dramatic shift in current consumerism habits, and a reduction in our want for things to be available to us instantly.

But to eradicate our appetite for instant gratification, you need to break down capitalism.

And there in lies the real problem …

Ad-Blocking – Blocking Social Popups

Ads are annoying, they are generally all in your face. If you haven’t got an ad blocker running on your browser now is the time to correct that! Go download uBlock Origin for your browser of choice be it Chrome, Firefox or Safari, its one of the best on the market and it’s lightweight enough for you not to notice any difference in page load times, you might actually notice an improvement in load times as a bunch of the usual trash that was being loaded is now being blocked.

Once you have an ad-blocker setup you soon discover that the net is quite a nice thing to look at. You can easily digest articles or sites that take your fancy without sensory overload when your not seeing the latest nonsense being punted by Wish or your favourite sites call to action for this weeks social injustice.

One of the most annoying pop-ups for me that used to slip though my filters was bloggers or influencer pop-ups asking you to subscribe to their mailing list or other social medias but alas, there is actually an option within uBlock Origin to block these. Its not enabled by default and hidden away under the Annoyances section if uBlock, flipping it on gets me one step closer to an annoyance, distraction free Internet.

To turn this setting on head into uBlock Origin’s settings and you will find a bunch of additional blocks that you can enable that are off by default, such as filter lists to block everything from Facebook but more specifically to turn off Social Media subscription messages or call to action pop-ups make sure you check to block Fanboy’s Annoyance and Fanboy’s Social.

Give it a go, you might be surprised how clean the web actual looks without all the advertisements and calls to action.

Korn Shell Operators

I write $SHELL scripts most days, I am always looking these two tables up on other sites rather than commit them to memory, so why not just post it here so I know where to find it forever more. We mostly use ksh over bash as ksh is on every system regardless of age of that host.

ItemDescription
-a FileTrue, if the specified file is a symbolic link that points to another file that does exist.
-b FileTrue, if the specified file exists and is a block special file.
-c FileTrue, if the specified file exists and is a character special file.
-d FileTrue, if the specified file exists and is a directory.
-e FileTrue, if the specified file exists.
-f FileTrue, if the specified file exists and is an ordinary file.
-g FileTrue, if the specified file exists and its setgid bit is set.
-h FileTrue, if the specified file exists and is a symbolic link.
-k FileTrue, if the specified file exists and its sticky bit is set.
-n StringTrue, if the length of the specified string is nonzero.
-o OptionTrue, if the specified option is on.
-p FileTrue, if the specified file exists and is a FIFO special file or a pipe.
-r FileTrue, if the specified file exists and is readable by the current process.
-s FileTrue, if the specified file exists and has a size greater than 0.
-t FileDescriptorTrue, if specified file descriptor number is open and associated with a terminal device.
-u FileTrue, if the specified file exists and its setuid bit is set.
-w FileTrue, if the specified file exists and the write bit is on. However, the file will not be writable on a read-only file system even if this test indicates true.
-x FileTrue, if the specified file exists and the execute flag is on. If the specified file exists and is a directory, then the current process has permission to search in the directory.
-z StringTrue, if length of the specified string is 0.
-L FileTrue, if the specified file exists and is a symbolic link.
-O FileTrue, if the specified file exists and is owned by the effective user ID of this process.
-G FileTrue, if the specified file exists and its group matches the effective group ID of this process.
-S FileTrue, if the specified file exists and is a socket.
File1 -nt File2True, if File1 exists and is newer than File2.
File1 -ot File2True, if File1 exists and is older than File2.
File1 -ef File2True, if File1 and File2 exist and refer to the same file.
String1 = String2True, if String1 is equal to String2.
String1 != String2True, if String1 is not equal to String2.
String = PatternTrue, if the specified string matches the specified pattern.
String != PatternTrue, if the specified string does not match the specified pattern.
String1 < String2True, if String1 comes before String2 based on the ASCII value of their characters.
String1 > String2True, if String1 comes after String2 based on the ASCII value of their characters.
Expression1 -eq Expression2True, if Expression1 is equal to Expression2.
Expression1 -ne Expression2True, if Expression1 is not equal to Expression2.
Expression1 -lt Expression2True, if Expression1 is less than Expression2.
Expression1 -gt Expression2True, if Expression1 is greater than Expression2.
Expression1 -le Expression2
True, if Expression1 is less than or equal to Expression2.
Expression1 -ge Expression2True, if Expression1 is greater than or equal to Expression2.

You can combine expressions together like below;

ItemDescription
(Expression)
True, if the specified expression is true. Used to group expressions.
! ExpressionTrue, if the specified expression is false.
Expression1 && Expression2True, if Expression1 and Expression2 are both true.
Expression1 || Expression2True, if either Expression1 or Expression2 is true.

Book Review – 5am Club – Robin S. Sharma

“Living the same week a few thousand times and calling it a life. I need to tell you that too many among us die at thirty and are buried at eighty.” – Robin S. Sharma

5am Club a book by Robin S. Sharma speaks about the benefits of waking up at 5am everyday before the rest of the world rises. The self help book takes the form of a story where 2 people meet a homeless man at a conference in New York, the homeless man turns out to be a world eccentric business mogul and billionaire Stone Riley. Stone takes it upon himself to teach his new found friends the ways for the 5am club as the travel the globe on his private jets learning they ways to bulletproof your life and achieve greatness through rising at 5am.

The book speaks of the 20/20/20 concept where you wake at 5am, perform 20 minutes of intense exercise, 20 minutes of self reflection such as meditation or journaling and 20 minutes of growth through reading and learning, the idea of doing this at 5am gives you 1hr of pure self care without distraction before everyone else starts to begin their days. It also touches on subjects that we as humans are meant to rise with the sun like our ancestors of old and that the human mind and body is at the most productive at first light rather than burning the midnight oil before going to sleep.

“All change is hard at first, messy in the middle and gorgeous at the end.” – Robin S. Sharma

The book doesn’t shy away from delivering hard truths, it bluntly states that most people lack the ability to rise at 5am that the temptation is just to much to fall back onto the pillow and go back to sleep and that waking at 5am is a true mind over matter battle that only the most dedicated can achieve. The books discusses issues on social media and our inability to escape news and current affairs keeping us in an endless trap glues to our smart phones scrolling though social media for a quick happiness fix when all it really does it leave us hungering for more.

“Limitation is nothing more than a mentality that too many good people practice daily until they believe it’s reality.” – Robin S. Sharma

The story itself following the three protagonists around is somewhat shallow, you can predict what going to happen next quite easily, although I do understand the story is only present to provide a framework for delivering a larger methodology but I felt it quite corny at times.

Ironically my major takeaway from the book is not that waking at 5am will solve all of your problems but the fact that implementing small but good habits and sticking to them overtime can result in a great amount of self improvement and a level of increased happiness.

I enjoyed the book, I might read another of the authors publications in time, but I won’t be rushing out to the pick it up straight away.

Listening Faster – Audiobooks at x2 speed

Over that last few weeks I have begun listening to audiobooks at x2+ speed, after each book is completed I increase the speed by 0.5 to find my max digestion speed. As it stands my current speed is at x2.15, I still have no problem taking in the information or understanding what’s being said. I’ll admit when I first started at x2.0 speed it sounds a bit strange but after 10-15min my brain had adapted and was processing the information normally. But why I hear you ask?

Consuming information and media is a fundamental part of life, whether your listening, watching or reading we all do it, it’s how we grow as a person via our learnings and life experiences, if you can consume and learn more, it can set you apart from another who is consuming only minimal amounts and not learning much at all.

If I said to you that you could easily get through 5-6 audiobooks per month with only an hour a day of listening, would this not peak your interest? Over the course of a year you would amass a total completed list of 72 audiobooks!

How? Audiobooks are recorded for all ages and capabilities, the default playback speed has to suit everybody regardless of the speed they themselves can read or digest information. In a digital age of social media and instant gratification the speed I can process information is much faster than the likes of my Dad, while he is tech savvy enough not he’s not been around technology and the Internet throughout all of his teens and adult life like I have, he’s much more comfortable reading the paper than flicking though Reddit and news sites. Due to the bombardment of information I am used to I can process information quicker, and more efficiently than my Dad can and no doubt the kids of today the true digital natives can do it better and faster than me.

Finding your limits, when you read a book to yourself or think to yourself what speed does your internal monologue go at? I am sure its much faster than you can read aloud. The aim of listening to audiobooks at an increased speed it to find where your limit is, when your internal monologue can no longer keep up, once this point is reached drop the speed one or two points below this value and continue listening. Being at x2.15 at the moment I am having no trouble I can see myself reaching around x2.5 before I need to look at tapering off.

Honestly give it a go, audio books, podcasts anything you just need to sit and listen to, its weird at first listening to someone speak in fast forward, by your mind soon adapts the situation and handles it as the new normal.

Weekend Project: Part 3 – Installing Pi-hole

As Sunday draws to a close we can finish up this weekend project by installing Pi-hole. What is Pi-hole I hear your ask? Well copied and pasted straight from the Pi-hole website, “The Pi-hole® is a DNS sinkhole that protects your devices from unwanted content, without installing any client-side software.”

Previouly I wrote the first 2 parts of this guide on my Macbook Air, but this final post I have written on my PC, please excuse any formatting of commands between Terminal & Putty.

To begin installing Pi-hole run the below command on you rPi;

paz@raspberrypi:~ $ wget -O basic-install.sh https://install.pi-hole.net
paz@raspberrypi:~ $ sudo bash basic-install.sh

The installer is very handsoff, it preforms a bunch of checks and then installs the whole process was done in a couple of minutes. One of the questions asked by Pi-hole installer is which DNS provider you would wish to use. You can choose any at this time as we will change it to Cloudflared (DNS over HTTPS) later on. The installer also asks if you would like to install a webGUI, this is optional I choose to have the GUI as over the initial weeks I intend to see how everything is going, so having a GUI is nice rather than trawling through endless logs. Once the installer is completed take note of your Pi-hole GUI web address and admin password as we will need this to login.

Installing Cloudflared

What is DNS over HTTPS, again copied directly from the Pi-hole website to save me having to type out my own explantaion.

DNS-Over-HTTPS is a protocol for performing DNS lookups via the same protocol you use to browse the web securely: HTTPS.

With standard DNS, requests are sent in plain-text, with no method to detect tampering or misbehaviour. This means that not only can a malicous actor look at all the DNS requests you are making (and therefore what websites you are visiting), they can also tamper with the response and redirect your device to resources in their control (such as a fake login page for internet banking).

DNS-Over-HTTPS prevents this by using standard HTTPS requests to retrieve DNS information. This means that the connection from the device to the DNS server is secure and can not easily be snooped, monitored, tampered with or blocked. It is worth noting however, that the upstream DNS-Over-HTTPS provider will still have this ability.

To start installing Cloudflared we need to pull down the Cloudflared files with wget

wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz
tar -zxf cloudflared-stable-linux-arm.tgz
sudo cp ./cloudflared /usr/local/bin
sudo chmod +x /usr/local/bin/cloudflared

Next we will create a cloudflared user to have the cloudflared service running sepratly from our VPN on our Pi, This user will be for cloudflared only and will not have a SHELL or any login password to prevent other utalising the account.

sudo useradd -s /usr/sbin/nologin -r -M cloudflared

Next create a file in /etc/default/cloudflared and paste the below into the file;

Commandline args for cloudflared
CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query
CLOUDFLARED_OPTS=--port 5054 --upstream https://9.9.9.9/dns-query

Change ownership of the cloudflared files to the cloudflared user

paz@raspberrypi:/etc/default $ sudo chown cloudflared:cloudflared /etc/default/cloudflared
paz@raspberrypi:/etc/default $ sudo chown cloudflared:cloudflared /usr/local/bin/cloudflared

Create the below file in /etc/systemd/system/cloudflared.service to allow automatic startup of the cloudflared service.

[Unit]
Description=cloudflared DNS over HTTPS proxy
After=syslog.target network-online.target

[Service]
Type=simple
User=cloudflared
EnvironmentFile=/etc/default/cloudflared
ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

Once the file has been created as per above, enable cloudflared in systemctl

paz@raspberrypi:/etc/default $ sudo systemctl enable cloudflared
Created symlink /etc/systemd/system/multi-user.target.wants/cloudflared.service → /etc/systemd/system/cloudflared.service.
paz@raspberrypi:/etc/default $ sudo systemctl start cloudflared
paz@raspberrypi:/etc/default $ sudo systemctl status cloudflared
● cloudflared.service - cloudflared DNS over HTTPS proxy
Loaded: loaded (/etc/systemd/system/cloudflared.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-01-26 09:34:51 GMT; 3s ago

Test the service is functioning as expected, you should recieve a response from bbc.co.uk similar to the below;

paz@raspberrypi:/etc/default $ dig @127.0.0.1 -p 5053 bbc.co.uk

; <<>> DiG 9.11.5-P4-5.1-Raspbian <<>> @127.0.0.1 -p 5053 bbc.co.uk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12841
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1452

; PAD: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ("………………….")
;; QUESTION SECTION:
;bbc.co.uk. IN A

;; ANSWER SECTION:
bbc.co.uk. 226 IN A 151.101.64.81
bbc.co.uk. 226 IN A 151.101.128.81
bbc.co.uk. 226 IN A 151.101.192.81
bbc.co.uk. 226 IN A 151.101.0.81

;; Query time: 26 msec
;; SERVER: 127.0.0.1#5053(127.0.0.1)
;; WHEN: Sun Jan 26 09:36:56 GMT 2020
;; MSG SIZE rcvd: 164

Now that we have configured Cloudflared its time to head over to the Pi-hole GUI to remove Google DNS and point to Cloudflared DNS servers. Login to your Pi-hole GUI using the username and password provided before. Once you login you should see something similar to this;

Head down to Settings then choose the DNS Tab, un-check Google DNS, add 127.0.0.1#5053 & 127.0.0.1#5054 to the Upstream DNS servers section and finally check ‘Listen on all interfaces’

Everything should now be working, you can use your Pi-hole dashboard to see hosts connected to Pi-hole, see how much has been blocked. You can test if you are using DNS-over-HTTPS here!

This brings me to the end of this weekend project, I could have rattled through all the comands myself in an afternoon, but writing these blog post added extra time. Until next time, happy surfing!

Weekend Project: Part 2 – Configuring a VPN on a Raspberry Pi

Following on from my previous post I will be setting up a VPN on my Raspberry Pi with an aim to better protect my online privacy with a VPN and Pi-hole. Having this setup will allow me to connect various household devices to the Raspberry Pi which will then pass traffic though the VPN. To allow connections we must make sure the Pi has a static IP address.

To set a static IP address we must add the address we want to the /etc/network/interfaces file on the Pi.

Add the address you wish your Pi to have in my case I chose 192.168.1.123 for gateway specify your gateway normally this is the address you us to access your router.

auto eth0
iface eth0 inet static
address 192.168.1.123
netmask 255.255.255.0
gateway 192.168.1.254

Lets start getting the packages we will need to configure our VPN by running the below;

paz@raspberrypi:~ $ sudo apt install openvpn curl iptables-persistent python-requests -y

Next we will begin configuring the VPN. For my VPN provider I use PrivateVPN. They are well respeceted, reasnably priced and keep no logs what so ever.

Download PrivateVPN’s openvpn files to your Raspberry Pi with the below commands;

paz@raspberrypi:/etc/openvpn $ sudo wget https://privatevpn.com/client/install.sh
paz@raspberrypi:/etc/openvpn $ sudo su -
root@raspberrypi:~# cd /etc/openvpn
root@raspberrypi:/etc/openvpn# ./install.sh

Running install.sh prompts you for username/password and creates the a VPN connection on your Pi that can be used on your Pi.

Edit the file /etc/openvpn/privatvpn.conf with the details of the PrivateVPN exist point you wish to connect to PrivateVPN provides a script to allow you to start the VPN called privatvpn. After install this file is located at /usr/bin/privatvpn. Add this file location to /etc/rc.local which will ensure that the VPN starts on startup should your Pi reboot or require a restart.

Weekend Project: Part 1 – Securing a Raspberry Pi

Recently I dug out the old Raspberry Pi with the aim of using it as a VPN and a DNS backhole. I have always hand a handle on my privacy online but since looking up a new office chair online last week Facebook has provided me with an onslaught of ads for various office chairs, normally I brush this off tracking cookies never really bother me to much but, for some reason this got me triggered. So this weekend I will be turning my Raspberry Pi into a VPN and DNS black hole. The Raspberry Pi will sit on my home network, any devices phone’s, laptops, PC’s etc can be configured to send traffic through the Pi and then out to the internet fully encrpted.

First things first is down download the latest version of Raspbian, you can find it here : https://www.raspberrypi.org/downloads/raspbian/

I am pretty well versed in a Linux/Unix command line and am comfertable in my Linux knowlage to know the various tools, where they are and if they are not present where to get them so, I went for the Raspian Lite image just to keep things as lean as possible.

Tip: If you plan to run your Pi as a headless server, after writing the Raspbian image to an SD Card create a file called ‘ssh’ (file can be empty) on the card to enable ssh on first boot. This used to be enabled by default but a recent change due to worries of attackers high jacking un-secure Raspberry Pi’s prompted the folks over an Pi HQ to turn SSH as default. This tip saves you having to connect a monitor, keyboard & mouse to your Pi just to turn on SSH.

First Things First

At this point I assume you have your Raspberry Pi powered on, to find you Pi’s IP address you can look up your router to see whats connected or try to ping raspberrypi.local. Once you have the IP you can ssh using Putty or Terminal with the following command;

ssh -l pi 192.168.1.141

Defualt password for pi user is raspberry

Change pi users password

At the end of this guide we will delete the pi user from the system but first things first lets change that default password. Just type the below;

pi@raspberrypi:~ $ passwd
Changing password for pi.
Current password:
New password:
Retype new password:
passwd: password updated successfully

Now that the password has been changed we will update the Pi so we are running the latest and greatest. The example below shows the command to run, although my Pi is already updated so it shows as no updates, expect this to take 10-15min download and install updates on your Pi.

pi@raspberrypi:~ $ sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade
Hit:1 http://raspbian.raspberrypi.org/raspbian buster InRelease
Hit:2 http://archive.raspberrypi.org/debian buster InRelease
Reading package lists… Done
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Now we have an up-to-date system lets create a new user and remove the default pi user. A new user can be created with the useradd comand. We will set a password for the new user.

pi@raspberrypi:~ $ sudo useradd paz
pi@raspberrypi:~ $ sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi paz

pi@raspberrypi:~ $ sudo passwd paz
New password:
Retype new password:
passwd: password updated successfully
pi@raspberrypi:~ $
pi@raspberrypi:~ $ exit
logout
Connection to 192.168.1.141 closed.

Lets disconnect as the pi user and connect as our new user, in my case ‘paz’.
pazy@Andrews-Air Downloads % ssh -l paz 192.168.1.141
paz@192.168.1.141's password:
Linux raspberrypi 4.19.75-v7+ #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
paz@raspberrypi:~ $

Finally we can delete the pi user from our Raspberry Pi;

paz@raspberrypi:~ $ sudo deluser pi
Removing user pi' ... Warning: grouppi' has no more members.
Done.

paz@raspberrypi:~ $ sudo rm -rf /home/pi

We now have an up-to-date Pi and new user different to the default to connect with. To many this is enough but if your intent to connect your Pi to face the internet then you should be performing further steps to prevent attacks. On th next section we will guide you though this.

The Next Level

To secure your Raspberry Pi further we will insall fail2ban and change the defauly SSH port from 22 to something of your choosing.

Changing SSH port is simple just edit the file /etc/ssh/ssd_config, where you see the entry #Port remove the # and change the port number from the default 22 to something of your choosing. In my case I use 2222.

Once you update /etc/ssh/ssd_config you will need to restart the ssh service using the below command;

paz@raspberrypi:~ $ sudo service ssh restart

If we exit our session on our Pi and try and re-connect you will see our connection fails as we no longer have ssh running on port 22, we must use -p option to specify port at 2222.

pazy@Andrews-Air Downloads % ssh -l paz 192.168.1.141 -p 22
ssh: connect to host 192.168.1.141 port 22: Connection refused
pazy@Andrews-Air Downloads %
pazy@Andrews-Air Downloads %
pazy@Andrews-Air Downloads % ssh -l paz 192.168.1.141 -p 2222

Next we will install fail2ban. fail2ban analyses system logs for failed attempts to login to you Pi, should X number of attempts result in a fail that IP address is then banned from accessing the host. This provided pretty good protection from anyone trying to brute force thier way onto your Pi.

To install fail2ban do the following;

paz@raspberrypi:~ $ sudo apt-get install fail2ban

With fail2ban you much copy the .config file to .local as per below;

paz@raspberrypi:~ $ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

If you wish to edit configuration for example the number of bad attempts allowed before a ban edit the jail.local file.

While the article does seem pretty long it will only take 15min or so to run through the commands. Next I will write about setting up a VPN and Pi-hole on your Pi.

Lack of Short, Story Driven Games

As a 30 year old male I find the amount of time I have for ‘gaming’ growing shorter and shorter. Its not that I don’t want to play games actually quite the opposite I would love to play more but, unfortunately life tends to get in the way.

Gone are the days of sitting for 6+ hours (some time much more back in the day ;D) and tackling the latest single player story. I look at games like The Witcher 3 now and while I own it, I just can’t dedicate time it deserves. Born in 1988 I am part of the generation where games and gaming have been part of my life since I was born. I first played my Dads Sega Master System before getting my own PS1 when it was released back in 1994. Is this why my Dad stopped gaming, he just didn’t have the time being a father, having job, husband etc.

I am constantly on the hunt for solid story based, single player games with a main storyline less that 20 hours that I can complete with only 30-40min here and there. I guess this is why we have seen this rise of the Battle Royale and MOBA genre where they provide 15-20min of high intensity, high octane gameplay allowing you to play 2-3 games/rounds and be satisfied.

With the largest demographic of gamers being 26-35 years of age surely I can’t be the only one that struggles to find time to play games while holding down a full-time job, be a husband and maintain an active social life?

If anyone is aware of short single player games let me know!

Warframe a 6 year old gift

I’ve known about Warframe for years but just never got around to giving it a go. The game first came out in 2013, any 6 year old game still being actively developed with a thriving community must be doing something right. After a dry period in my gaming catalog I finally decided to jump in and give Warframe a shot and have since racked up almost 30 hours of play.

Firstly the game is great, it runs flawlessly, looks great and plays great the next update (coming soon) brings a graphics overhaul to bring it inline with most modern day AAA titles.

You play as a Tenno (aka Space Ninja’s) a long lost race of noble warriors who one day in a world full of conflict just up-ed and left never to be seen again. Starting a new game you are given the option to play in 1 of 3 ‘frames’ each with there own unique traits and abilities. The game as of writing has over 20 unlockable frames so there is a play style to suit everyone.

Movement is a big deal in warframe and once you master the power slide, into jump, back into slide combo you with literately be flipping about the levels at blistering pace slicing up enemies left, right and centre it really is one of the best parts of the game, its so fluid and you do really get that Space Ninja feel as you glide around. With 14 planets to visit in the game each with around 10 locations the game is nothing short of massive but not necessarily demanding you are able to play very much at your own pace only clearing a few levels if that is all you have time for. The game does a good job of keeping you on the right track making sure progression doesn’t slow down.

Its a free to play game with micro transactions but thankfully its not pay to win. Everything in Warframe is fully unlockable in the game absolutely free you can pay to speed things up but it is absolutely not necessary. At is core Warframe is a farming/grinding game with the end goal to become as powerful and possible if you want a specific weapon be prepared to ‘farm’ the materials required to craft said weapon which could require running the same mission over and over until you meet the required quota.

Warframe is available to every platform at the moment so there really inst a reason you can’t play a small drawback is its not cross platform so any frames I have unlocked on my PC account won’t be available if I were to start playing on my Switch.

The upcoming expansion Warframe: Empyrean brings a graphical overhaul, space ships (fuck yea!) and a new enemy race. If there was ever a time to give Warframe a shot now is the time. If none of this has give you even the slightest inclination to play watch the intro trailer and think of the Space Ninja you could be.